【发布时间】:2017-04-28 14:07:24
【问题描述】:
我制作了一个简单的 C 程序来演示这个问题。在这里。
#include <stdio.h>
int main(int argc, const char * argv[]) {
char buffer[128];
memset(buffer, 0, sizeof(buffer));
printf("Type data:\n");
scanf("%126s", buffer);
printf("%s\n", buffer);
getchar();
return 0;
}
问题在于,当应用程序正在等待用户使用 scanf() 输入并且用户想要编辑他键入的行并使用箭头移动插入符号时,插入符号不会移动,但会插入新的丑陋输入。
由于某种原因,它没有以我期望的方式处理密钥。我也无法使用向上键转到上一个键入的行。
显然我应该故意启用这种行为。你能建议,我该怎么做?
【问题讨论】:
-
您可能必须使用 ncurses 库(或 OS X 上的等效库)才能执行您所说的那种面向终端的 I/O。标准的 C I/O 函数处理字符流,因此它们不能很好地处理终端发送的转义字符。
-
我想过这样的库,但是终端不应该自己处理吗?许多应用程序都允许这种操作,而且它们都使用非标准库似乎很奇怪。
-
他们都使用非标准库,因为没有标准库可以使用。
标签: c++ c terminal command-line-interface