c语言中getchar在while用法,getchar()在while循环里面的问题

getchar()是C语言里一个字符输入函数,当它被调用的时候会从当前的文本流中读取一个字符, 并将其结果返回,我们看下面的一段程序:

#include

int main(int argc, const char * argv[]) {

int c, n;

while ((c = getchar()) != EOF) {

++n;

}

printf("\"n\" = %d\n", n);

return 0;

}

注意:

这里的字符c之所以声明为int而不是char,是因为EOF的值是-1,我们不能把-1赋值给一个char变量。而且char本身就是int类型 。

上面程序的意思是:

我们从输入流里面读取一个字符, 并把这个字符赋值给c, 如果c不是文件结束符EOF的话,我们就把n加上1,继续读取下一个字符并且赋值给c,继续我们的循环 。

如果c是文件结束符,那么退出循环,程序继续运行(也就是打印字符个数n)。

可是运行程序我们会发现,在我们输入一段字符串并回车的时候,循环并不会结束,终端还会提示我们继续输入。

这是因为Enter在ASCII码中也是一个字符(ASCII码为13),也就是说while循环并没有结束。

怎么才能输入EOF呢?

在Linux下是control + d

下面我们运行程序,输入asdfg,回车,control &#

你可能感兴趣的:(c语言中getchar在while用法,getchar()在while循环里面的问题)