【发布时间】:2011-09-10 17:30:25
【问题描述】:
代码:
#include <stdio.h>
#define NEWLINE '\n'
#define SPACE ' '
int main(void)
{
int ch;
int count = 0;
while((ch = getchar()) != EOF)
{
if(ch != NEWLINE && ch != SPACE)
count++;
}
printf("There are %d characters input\n" , count);
return 0;
}
问题:
一切正常,它会忽略空格和换行符并输出输入到屏幕的字符数(在这个程序中,我只是将逗号、感叹号、数字或任何可打印的特殊符号字符(如&符号)视为字符太)当我点击
^z的EOF模拟时。但是当我将这一行输入到程序时出现了问题。例如我输入这个:
abcdefg^z,这意味着我在^z之前和同一行输入了一些字符。程序不会终止程序并打印出总字符数,而是会继续请求输入。EOF 终止字符输入仅在我在单行上指定
^z或通过执行以下操作时才有效:^zabvcjdjsjsj。为什么会这样?
【问题讨论】: