繁体   English   中英

从stdin到C中的EOF逐字符读取

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM