scanf是先往缓冲区中写入数据,然后在把数据从缓冲区中取出
getchar作用是从缓冲区中获取一个字符
putchar是向屏幕上输出一个字符
注意:这个问题只存在scanf用来输入字符时,因为int等数据类型不会接收空格的赋值操作,只有char类型才会接收空格的赋值操作
#define _CRT_SECURE_NO_WARNINGS
#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;
}
因此要解决上面的问题,需要在scanf语句后面天写一个getchar来获取\n,让用户能正常给ch赋值
#define _CRT_SECURE_NO_WARNINGS
#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;
}