0

我正在使用 NetBeans MinGW 编译简单的 c 程序(我是新手)。我的问题是我有这个简单的代码

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    int c,i=0;
    while((c=getchar())!=EOF){
        i++;
    }
    printf("%d",i);
    return 0;
}

当我尝试像这样结束输入时:

你好^Z [进入]

不行,我需要重新输入

^Z[输入]

结束它。

我很感激你告诉我为什么会发生这种情况。

提前致谢

4

2 回答 2

2

默认情况下,C 输入是面向行的。以 EOF 字符结束一行(^Z在 Windows 上,^D在 Unix 上)结束该行(没有尾随换行符),但实际上并不表示文件结束;文件结束条件在下一次读取时发出信号,即在行的开头。

于 2011-03-23T14:20:07.513 回答
1

就像控制台处理输入一样

UNIX 系统上的 Ctrl-Z 将是一个中断,让您暂停进程,所以我猜它是一个 Windows 控制台。

当您在字符后按 Ctrl-Z 时,它可能会将其视为“结束”,它本身就是 Ctrl-Z。

于 2011-03-23T14:20:52.633 回答