如何避免scanf中的回车

Michael_yo 2019-03-12 12:06:11

#include "stdio.h"
#include "conio.h"
void main()
{
int a1;
float a2;
char a3[20];
printf("请输入分数");
scanf("%d",&a1);

printf("请输入身高");
scanf("%f",&a2);

printf("请输入学号");
scanf(gets(a3));

printf("分数:%d,身高:%f,",a1,a2);
puts(a3);
getch();
}



结果与我预想不一样,回车的话会直接跳过gets()的输入,空格的话会跳过“请输入学号”
求大神指导
...全文
858 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_42307333 2019-03-12
  • 打赏
  • 举报
回复
scanf(gets(a3));为什么要这么写,这里scanf没意义啊,你可以在输入身高过后加一句getchar()来获取多出来的回车,这样后面就可以输入了
拒绝i++ 2019-03-12
  • 打赏
  • 举报
回复
你好,scanf为匹配函数,在你的第二个scanf使用过程中键入的回车符会被退回缓冲区,而gets函数会在遇到这个回车符的时候结束进程,将回车符转换为空字符。这就是你的不让输入学号的原因。建议改为scanf("%s",a3);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧