用scanf_s输入整形数据后,无法再输入字符型数据,

#include<stdio.h>
#include<stdlib.h>
void main()
{
int i;
char sex;
scanf_s("%d%c", &i );
printf("%d\n", i);
scanf_s("%c", &s);
printf("%c\n", s);
system("pause");
}
在输入i之后,无法输入s

这样的话,还是可以的:
#include<stdio.h>
void main()
{
int i;
char s;
scanf_s("%d%c", &i,&s ); //输完数字后紧接回车,s就读取了回车符
printf("%d\n", i);
scanf_s("%c", &s); //再次输入字符时就能读到了
printf("%c\n", s);
system("pause");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-29

因为回车也是字符

scanf_s("%d%c", &i );

这句后面加个

getchar();

而且你这明明是两个说明符,怎么赋给一个变量,用%*c接收一个字符(但不赋值)

最后scanf_s和scanf的用法不同,需要三个参数,最后一个是要读入的字节数(用sizeof确定)

建议将程序中的所有scanf_s替换为scanf

然后在代码第一行前面加

#define _CRT_SECURE_NO_WARNINGS

屏蔽警告

第2个回答  2017-01-16
清除缓存区。
第3个回答  2015-10-25
用 scanf_s 之前先查清它的用法……追问

查清楚了呀,复制过来的时候有点错误,scanf_s("%d%c", &i );应该为scanf_s("%d", &i );

追答

并不是嘴上说“查清楚了”就证明真的查清楚了啊……

追问

知道就说,不知道就别瞎BB

相似回答