2017-04-09 72 views
0

我是C新手,所以我想获得更多的库函数经验。当我开始摆弄getch()时,我不能为了我的生活而开始工作。所发生的只是这些角色被回显到控制台,我可以输入多个,甚至按下输入键,而不必在整个程序中继续输入。这是我制作的一个小测试代码。任何想法,我哪里错了?Getch只是拒绝为我工作,因为它应该

#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 



int main(){ 
    char i = '9'; 
    i = getch(); 
    printf("%c", i); 

} 

编辑:谢谢你所有的答案,虽然我可以更清楚我想要什么。我希望getch()几乎可以像fgets()一样使用,除非我不希望它回显,我希望控制台能够接受立即输入的字符,而不需要按任何回车键。 getch错误的工具来做到这一点?

+1

这是不是真的清楚什么是你的目标? – yakobom

+0

[如何获得在控制台按键事件(HTTP的可能重复:/ /stackoverflow.com/questions/14973046/how-to-get-keypress-event-in-console) –

+0

你可能想看看'ncurses'库。 –

回答

1

更改此

i = getch(); 

i = getchar(); 

getchar()是一个标准的功能会从标准输入一个字符。

getch()是非标准的。它从键盘获得一个字符(可能与标准输入不同)并且不会回显它。

+2

非标准*和*不可移植(意味着它不能保证存在,更不用说重现所需的行为),与''中的所有内容一样。同时将'char i'改为'int i',因为'getchar'返回'int',并且'printf(“%c”,i);'to'if(i!= EOF){putchar(i); }'来处理'EOF'并正确读取错误。 – Sebivor

+0

是正确的 – Arvindsinc2

1

getch()是一个函数,用于结束或关闭conio头文件在窗口中使用的主函数。 没有使用stdlib头函数,它将字符串 作为函数使用。 %c用于打印字符。 如果u要打印我不是去像下面提及: -

#include <stdio.h> 
#include <conio.h> 
void main() 
{ 
int i = 9; 
printf("%d", i); 
getch(); 
} 
相关问题