代码如下 运行环境 VS2013
问题:输入1a 输出a=1 (这个没问题)而ch却什么都没得到。为什么?ch不应是a吗?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a;
char ch;
scanf_s("%d", &a);
printf("a=%d\n",a);
scanf_s("%c", &ch);
printf("ch=%c\n",ch);
system("pause");
return 0;
}
运行结果附图如下:
int main() {
int a; char ch;
scanf("%dn", &a); printf("a=%dn",a);
scanf("%c", &ch); printf("ch=%cn",ch); return 0; } 第一次读入后
int main()
{
int a;
char ch;
scanf("%dn", &a);
printf("a=%dn",a);
scanf("%c", &ch);
printf("ch=%cn",ch);
return 0;
}
第一次读入后添加换行
int main()
{
int a;
char ch;
scanf("%dn", &a);
printf("a=%dn",a);
scanf("%c", &ch);
printf("ch=%cn",ch);
return 0;
}
第一次读入后添加换行
include include
int main()
{
int a;
char ch;
scanf("%dn", &a);
printf("a=%dn",a);
scanf("%c", &ch);
printf("ch=%cn",ch);
return 0;
}
第一次读入后添加换行
个人比较认可 VS 的情况
一次输入回车换行,算是本次输入的结束,而不应该响应后续的数据输入与处理。
当然,各个编译器的处理确实不同。因为你的输入都被获取到了,只是看如何处理。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。