#include<stdio.h>
#include<string.h>
int main()
{
int a[10];
char b[10];
printf("请输入数字\n");
scanf("%d", &a[0]);
printf("请输入字符串\n");
scanf("%s", &b[0]);
printf("%d\n",a[0]);
printf("%s\n", &b[0]);
}
这里输入23dsa后,我并没有输入字符串,它就直接如上分别打印数字和字符串了。
原因是输入数字的时候,输入了数字字符和字母字符,但是它%d匹配的时候,第一个printf它会拿走缓冲区的数字字符,也就是拿走这里面的23,但是字母字符还在缓冲区留着,所以说下次scanf输入%s字符串的时候,它直接看到缓冲区有数据,它就直接匹配了,就把dsa给了b[0]。