首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“吃蛋”(鸡计划)

“吃蛋”(鸡计划)
EN

Stack Overflow用户
提问于 2017-07-23 14:24:49
回答 2查看 171关注 0票数 2

我试图弄清楚如何使用函数getstr of 这个蛋 (以及由此产生的mvgetstrmvwgetstr等)。例如:

代码语言:javascript
复制
(require-extension ncurses)

(let ((stdscr (initscr)) (str (make-string 10)))
  (getstr str)
  (addstr str)
  (getch))

csi告诉我

错误:错误的参数类型-不是指针:“”

所以我试着用这个:

代码语言:javascript
复制
(require-extension ncurses)

(let ((stdscr (initscr)) (str (make-string 10)))
  (begin      
  (getstr (object->pointer str))
   (addstr str)
   (getch)))) 

这次csi给了我另一个错误:

错误:错误的参数类型-不是字符串:在堆栈执行终止中检测到已损坏的数据

我认为问题在于字符串的编码(函数认为是ascii和另一个utf-8)。我没有使用指针的经验,我只知道用这个蛋得到一根线的最好的防白痴方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-27 19:08:53

最后,我认为这是一个臭虫的诅咒蛋。这里,他们说这是一个错误,而且它是正确的,但我在上一个版本中也有同样的问题。

然而,这些函数并不真正类似于方案,使用getch (正确地工作)重新定义这些函数很简单。例如:

代码语言:javascript
复制
(define (mvgetstr x y)
  (move y x)
  (let loop ((str ""))
    (let ((ch (getch)))
      (if (eq? (char->integer ch ) 10) ;10 is the ENTER KEY code
      str
      (loop (string-append str (string ch)))))))

编辑:另一个用户建议了一种使用此功能的方法,以及类似的方法:

代码语言:javascript
复制
(use ncurses lolevel data-structures)

(define (get-string max)
  (let ((buffer (make-string max #\null)))
    (getnstr (make-locative buffer) max)
    (string-translate buffer #\null)))

(let ((stdscr (initscr))
      (str (get-string 10)))
  (addstr str)
  (getch)
  (write str))
票数 1
EN

Stack Overflow用户

发布于 2020-04-03 04:39:09

这似乎适用于鸡肉计划的第5版:

代码语言:javascript
复制
(import ncurses
     (chicken locative)
     (chicken string))

(let ((stdscr (initscr)) (str (make-string 10)))
    (getstr (make-locative str))
    (addstr (string-translate str #\null))
    (getch)
    (endwin))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45266152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档