c语言中用了scanf语句就输不出结果把scanf删掉就能出结果是为啥
发布网友
发布时间:2022-04-29 21:41
我来回答
共2个回答
热心网友
时间:2023-10-09 10:31
scanf读取的是当前键盘缓冲区中的数据,而不是用户当前的输入的数据,
所以当键盘缓冲区清空的不及时的话,
会导致读入数据不正确。
在这个代码中就是由于编译系统本身对于键盘缓冲区清空的不及时,
导致scanf读入了上次输入数据时最后输入的回车,做为了本次用户输入,
可以人为的强制进行键盘缓冲区清空,来解决这个问题。
fflush(stdin);//强制进行键盘缓冲区清空语句
这么改:
char
sex,*num,*name,*birth,*add;
int
age;
printf("student
num:");
fflush(stdin);
scanf("%s",num);
printf("student
name:");
fflush(stdin);
scanf("%s",name);
printf("student
age:");
fflush(stdin);
scanf("%d",&age);
printf("student
sex:");
fflush(stdin);
scanf("%c",&sex);
printf("student
brith:");
fflush(stdin);
scanf("%s",birth);
printf("student
add:");
热心网友
时间:2023-10-09 10:32
因为scanf是限定格式输入语句的函数,但是具体的问题你最好把代码发上来看看。