在C中每循环迭代读取三个字符?

这对我来说毫无意义,但希望你们其中一个人明白为什么要这样做.

我有一个赋值,需要用getchar()读取三个字符,因为彼此相邻的三个整数彼此相关,所以我设置了一个循环结构如下:

int c1,c2,c3 = 0;

while(c3 != EOF) {
    c1 = getchar();
    c2 = getchar();
    c3 = getchar();
    ... do something with them...
}

问题是如果字符数不能被3整除,则不执行最后一次迭代.因此,如果输入了字符“Abcd”,它将在Abc上进行第一次迭代,但是第二次迭代不会对D执行任何操作.对于“Abcde”,但Abcdef会起作用.

这是一个家庭作业,所以不要为我解决这个问题,但是如果没有找到很多字符的话,这就像getchar一样奇怪它只是终止了循环吗?

解决方法

getchar是一个阻塞调用,因此在读取字符或遇到EOF之前不会返回.

因此,在相应的getchar调用之后检查c1,c2或c3中的任何一个是否为换行符(以查看输入行是否已结束),或按Ctrl D(* nix,OS X)或Ctrl Z(Windows )发出文件结束信号(EOF).在EOF之后,getchar将始终立即返回EOF.

相关文章

首先GDB是类unix系统下一个优秀的调试工具, 当然作为debug代...
1. C语言定义1个数组的时候, 必须同时指定它的长度.例如:int...
C++的auto关键字在C+⬑新标准出来之前基本...
const关键字是用于定义一个不该被改变的对象,它的作用是告诉...
文章浏览阅读315次。之前用C语言编过链表,这几天突然想用C+...
文章浏览阅读219次。碰到问题就要记录下来,防止遗忘吧。文章...