gpt4 book ai didi

c - 关于getchar()函数的有趣实践

转载 作者:太空狗 更新时间:2023-10-29 15:49:04 24 4
gpt4 key购买 nike

我在做K&R练习的时候,发现一个很有意思的问题:

代码如下:


include <stdio.h>
main()
{
int c;
int bn;
bn=0;
while((c=getchar())!=EOF)
{
if(c==' ')
bn++;
}
printf("blanks counter:%d\n",bn);
}

代码函数是统计空格数

我一次输入了所有的单词,没有使用退格键,完成了。


$ ./a.out

I have a dream

blanks counter:3

但是,如果我使用退格键,输入过程中可能会发生什么?

我推测当一个空格键被按下时,getchar()函数应该得到这个事件,然后执行bn++,所以即使我后来按下一个退格键来删除这个空格,bn变量的值也不会改变。但是实践的结果和我推测的不一样,实践的程序如下:

第一步:输入第一个空格 enter image description here

第二步:使用退格键删除空格 enter image description here第三步:完成剩余的字符输入 enter image description here

为什么结果是 3 而不是 4?为什么按下退格键会改变 bn 变量的值?

请给我一些想法,谢谢!

最佳答案

您的控制台是行缓冲标准输入。这意味着您的程序在您按下 Return 之前不会接收到任何输入,并且它会接收到已编辑的文本,而不是实际的击键序列。

关于c - 关于getchar()函数的有趣实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13341177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com