我监视变量,发现只有char类型变量才会调用缓存区的'\n'导致结果出错。必须加一个getchar()才能把'\n'吸收,像是char a[20]这样的用scanf给他赋值,也不会读取上一个scanf留下的'\n'。
#include<stdio.h>
void test()
{
int num = 0;
printf("请重新给num赋值:");
scanf("%d", &num);
printf("num的新值为:%d\n", num);
getchar();
char ch = 'a';
printf("请重新给ch赋值: ");
scanf("%c", &ch);
printf("ch的新值为:%c\n", ch);
}
int main()
{
test();
return 0;
}
这里就可以正常实现功能
而我将getchar()删除之后
#include<stdio.h>
void test()
{
int num = 0;
printf("请重新给num赋值:");
scanf("%d", &num);
printf("num的新值为:%d\n", num);
char ch = 'a';
printf("请重新给ch赋值: ");
scanf("%c", &ch);
printf("ch的新值为:%c\n", ch);
}
int main()
{
test();
return 0;
}
ch就直接读取了缓存区遗留的'\n'
而我将char ='a'改成char a[20]则也可以正常输入输出,并没有直接读取'\n'
#include<stdio.h>
void test()
{
int num = 0;
printf("请重新给num赋值:");
scanf("%d", &num);
printf("num的新值为:%d\n", num);
char ch[20];
printf("请重新给ch赋值: ");
scanf("%s", &ch);
printf("ch的新值为:%s\n", ch);
}
int main()
{
test();
return 0;
}
后面我有换了int也没有读取'\n'
所以'\n'这个符号什么时候在缓存区消失呢?
又如何在visual studio中查看这个缓存区内容呢?