rewind(stdin)清空缓冲区
如果不用rewind(stdin)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
int iNum;
char cNum;
printf("input iNum:");
scanf("%d", &iNum);
printf("iNum=%d", iNum);
printf("input cNum:");
scanf("%c", &cNum);
printf("cNum=%c", cNum);
system("pause");
return 0;
输出结果:
input iNum:100
iNum=100input cNum:cNum=
请按任意键继续. . .
可以看到cNum被赋值成了回车(没有清空缓存区的缘故)
用上rewind(stdin)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
int iNum;
char cNum;
printf("input iNum:");
scanf("%d", &iNum);
printf("iNum=%d\n", iNum);
printf("input cNum:");
rewind(stdin);
scanf("%c", &cNum);
printf("cNum=%c\n", cNum);
system("pause");
return 0;
}
输出结果:
input iNum:100
iNum=100
input cNum:a
cNum=a
请按任意键继续. . .
文章展示了在C语言中,当使用scanf读取整数后,输入的回车符会留在缓冲区导致后续读取字符时出现问题。通过调用rewind(stdin)函数可以清空缓冲区,确保正确读取字符。
&spm=1001.2101.3001.5002&articleId=128667447&d=1&t=3&u=d9996e143d6948a08511fcff75634ef9)
981

被折叠的 条评论
为什么被折叠?



