Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 跨平台解决方案,支持箭头键输入标准DIN?_C_Input_Scanf_Fgets_Arrow Keys - Fatal编程技术网

C 跨平台解决方案,支持箭头键输入标准DIN?

C 跨平台解决方案,支持箭头键输入标准DIN?,c,input,scanf,fgets,arrow-keys,C,Input,Scanf,Fgets,Arrow Keys,我知道有很多类似的问题,但我找不到足够清楚的答案 我正在写一些类似于C语言中的一个小的原始shell的东西。我不断地询问用户输入命令,并对其进行处理。要阅读一行,我使用fgets()。它工作得非常好(尽管每次我都要删除\n),但是如果我想在键入内容时移动光标,原始键代码会被放入控制台。我不仅不能使用向上和向下箭头键获取以前的命令,而且我也无法纠正任何打字错误,而不使用退格删除所有内容,直到输入错误,然后再次输入内容 使用scanf()时也会发生同样的情况,因此fgets()不是罪魁祸首。有趣的是

我知道有很多类似的问题,但我找不到足够清楚的答案

我正在写一些类似于C语言中的一个小的原始shell的东西。我不断地询问用户输入命令,并对其进行处理。要阅读一行,我使用
fgets()
。它工作得非常好(尽管每次我都要删除
\n
),但是如果我想在键入内容时移动光标,原始键代码会被放入控制台。我不仅不能使用向上和向下箭头键获取以前的命令,而且我也无法纠正任何打字错误,而不使用退格删除所有内容,直到输入错误,然后再次输入内容

使用
scanf()
时也会发生同样的情况,因此
fgets()
不是罪魁祸首。有趣的是,当我在Windows上试用时,它工作得很好。此外,正如我所说,例如,退格键实际上删除字符


我知道我可以使用
ncurses
,但我更愿意找到另一个优雅的解决方案…

您需要一个像
readline
这样的库
不要陷入“可移植代码”中。

您可以使用
条件包含
在不同的平台上保持兼容。

C标准基于面向流的输入和输出。没有不涉及第三方库的跨平台解决方案。不过,假设您愿意使用第三方库
ncurses
可能是你最好的选择。还有Gnu Readline。@LeednielCrocker这不是只在Linux/UNIX上工作吗?我正在尝试编写在Windows上也能工作的可移植代码