关于getchar()函数的一个有趣的实践
发布时间:2020-12-16 10:23:13 所属栏目:百科 来源:网络整理
导读:当我在K R上练习时,我发现了一个非常有趣的问题: 代码如下: include stdio.hmain() { int c; int bn; bn=0; while((c=getchar())!=EOF) { if(c==' ') bn++; } printf("blanks counter:%dn",bn); } 代码函数是统计空白的数量 我一次输入所有单词,没有使用
当我在K& R上练习时,我发现了一个非常有趣的问题:
代码如下: include <stdio.h> main() { int c; int bn; bn=0; while((c=getchar())!=EOF) { if(c==' ') bn++; } printf("blanks counter:%dn",bn); } 代码函数是统计空白的数量 我一次输入所有单词,没有使用退格键,就完成了. $./a.out I have a dream blanks counter:3 但是,如果我使用退格键,输入过程中会发生什么? 我推测当按下空格键时,getchar()函数应该得到这个事件,然后执行bn,所以即使我后来按退格键删除这个空白空间,bn变量的值也不会改变. 第一步:输入第一个空格 第二步:使用退格键删除空白空间 第三步:完成剩余的字符输入 为什么结果是3而不是4?为什么bn变量的值会被按下退格键改变? 请给我一些想法,谢谢! 解决方法
你的控制台是行缓冲标准输入.这意味着在您点击Return之前,您的程序将不会收到任何输入,它将接收已编辑的文本,而不是实际的击键顺序.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |