加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:01:23 所属栏目:百科 来源:网络整理
导读:这对我来说毫无意义,但希望你们其中一个人明白为什么要这样做. 我有一个赋值,需要用getchar()读取三个字符,因为彼此相邻的三个整数彼此相关,所以我设置了一个循环结构如下: int c1,c2,c3 = 0;while(c3 != EOF) { c1 = getchar(); c2 = getchar(); c3 = getc
这对我来说毫无意义,但希望你们其中一个人明白为什么要这样做.

我有一个赋值,需要用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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读