提问人:mert onur 提问时间:11/18/2023 最后编辑:chux - Reinstate Monicamert onur 更新时间:11/18/2023 访问量:61
为什么 while((c = getchar()) != EOF) 在 c 编程中重复 2 次?
Why does while((c = getchar()) != EOF) repeat 2 times in c programming?
问:
当我从键盘输入一个数字时,而循环会 2 次,我不明白它为什么要这样做。我想在每次输入数字后运行一次此循环。有没有人可以解释这种情况?
我的代码:
#include <stdio.h>
int main() {
char c;
while((c = getchar()) != EOF){
printf("c = %c\n", c);
int i;
for(i = 0; i< 10; i++){
printf("%d in loop\n", i);
}
}
printf("%d - at EOF\n", c);
}
输出:在此处输入图像描述
我想让这个源代码真正发挥作用。
答:
1赞
chux - Reinstate Monica
11/18/2023
#1
为什么在 C 编程中重复 2 次 (?
while((c = getchar()) != EOF)
因为 OP 按下了 2 个键:和在发出文件结束信号之前。
循环对每个字符运行一次:和 。6Enterfor
'6'
'\n'
我想在每个输入数字后运行此循环一次。
OP 似乎希望按每个数字运行循环。
修改代码以仅在键为数字时运行循环:
if (c >= '0' || c <= '9') { // add
for (i = 0; i< 10; i++) {
printf("%d in loop\n", i);
}
} // add
或使用 .if (isdigit(c)) {
如果要将输入 like 作为 1 个数字处理,然后运行循环一次,则需要额外的代码。-123Enterfor
更改为 as 通常对 256 个不同的值进行编码,并返回 257 个不同的值。@Jonathan 莱夫勒char c;
int c;
char
int getchar()
评论
'\n'
(换行符)也是一个字符。为了阻止这种情况发生,您可以添加 while 循环条件。&& c != '\n'
c = getc(file)) != EOF)
循环不会停止执行等问题。这是否真的导致了你的问题,目前还不太清楚。int c
char c