最近刚刚接触了这个东西,不知道理解的有没有错误,希望各位帮忙指出
缓冲区在我看来就好像是一个超市的仓库,我们把东西存进去,等货架上的货物空了以后再从仓库中取出
scanf以及getchar就是货物存入的工具
对于这个理解我有提过一次
两个相邻的scanf后一个总是会被跳过?还在为这个发愁?我来为你解答!_佳子81_的博客-CSDN博客是一枚努力学习编程的小佳子呀!!!https://blog.csdn.net/m0_74403994/article/details/128043683?spm=1001.2014.3001.5502但是今天早上我在使用while循环嵌套scanf()的时候出现的状况又引起了我新的思考
该例题为判断一行字符中是否存在相同的字符,以及输出该字符。
代码如下
#include <stdio.h>
#include <math.h>
int main()
{
char a,b;
printf("输入一行字符:");
b=getchar(); //输入一串字符,但是getchar只读取第一个数据,剩下的存入缓冲区中
printf("%c",b);
while((a=getchar())!='\n') //读取缓冲区中的数据,利用循环重复读取
{
if(a==b)
{
printf("same character %c\n",a);
break;
}
b=a; //如果读取的a不等于b,则把a赋值给b进行下一次比较,依次读取缓冲区的值
}
return 0;
}
当scanf()嵌套在像while这样的循环语句中时就会自动读取之前存储在缓冲区中的数据,从而实现整个程序的自动化进行。
说实话在相通之前我真的是百思不得其解,但是现在一整个就是恍然大悟,希望我留下的这些感悟对各位小伙伴学习c有所帮助呀,同时也算是记录我的成长(因为我真的是一个很健忘的人,学过的东西过眼就忘呜呜呜)
See you!