当我从键盘输入数字时,while 循环执行两次,我不明白为什么要这样做。我想在每次输入数字后运行一次这个循环。有谁可以解释这种情况吗?
我的代码:
#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);
}
我想让这个源代码真正发挥作用。
为什么 while((c = getchar()) != EOF) 在 C 编程中重复 2 次
因为OP按下了2个键6Enter并且
for
循环为每个字符运行一次:'6'
和'\n'
。
我想在每次输入数字后运行此循环一次。
修改代码以仅在键为数字时运行循环:
if (c >= '0' || c <= '9') { // add
for(i = 0; i< 10; i++){
printf("%d in loop\n", i);
}
} // add
或使用
if (isdigit(c)) {
将
char c;
更改为 int c;
,通常 char
编码 256 个不同的值,int getchar()
返回 257 个不同的值。