为什么 while((c = getchar()) != EOF) 在 C 编程中重复 2 次

问题描述 投票:0回答:1

当我从键盘输入数字时,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);
}

输出: enter image description here

我想让这个源代码真正发挥作用。

c while-loop eof getchar
1个回答
0
投票

为什么 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 个不同的值。

© www.soinside.com 2019 - 2024. All rights reserved.