[英]Reading character by character from stdin until EOF in C
我试图在C中读取一个字符串,直到EOF,但对输入下一个字符之前的每个字符做出反应。 例如:用户输入abcd
,并且在每个字符输入之后,我都会对每个字符进行一些计算。 我试图用两种不同的方法来解决这个问题:
选项1,使用getchar():
int d;
char c;
while ((d = getchar()) != EOF) {
c = (char)d;
<<< DO SOME CALCULATIONS ON 'c'>>>
}
选项2,使用scanf:
char c;
while (scanf(" %c",&c) != EOF) {
<<< DO SOME CALCULATIONS ON 'c'>>>
}
但是,两种方法似乎都失败了。 似乎getchar()和scanf()会获取所有字符,直到遇到'EOF',然后才进入while循环。
希望对此有所帮助,谢谢!
scanf手册说:
“如果在第一次成功转换或匹配失败之前输入结束,则返回EOF值。如果发生读取错误,也会返回EOF,在这种情况下,流的错误指示符(请参见ferror(3)设置为,而errno设置为错误。”
..在这种情况下,最好使用do..while与scanf配合使用(如果要存储scanf的返回值以检查错误):
char c;
do{
scanf("%c",&c);
/* DO SOME CALCULATIONS ON 'c' */
}while(c != EOF);
与原始模式下的getchar()相同,将对每个用户击键做出反应
看到使用原始模式的情况: https : //stackoverflow.com/a/22517349/8907248
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.