结构体中scanf输入字符----(遇到的一个小问题)

本文介绍了一个常见的C语言编程问题,即在结构体中使用scanf输入单个字符时,遇到无法正确读取字符的情况。通过简单的修改,解决了性别字段无法输入的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  不知道大家有没有遇到,在结构体中,scanf输入单个字符时会遇到在显示屏上无法输入字符。回车键被误认为是一个字符。

下面是自己遇到的这样的问题:

主要代码:

struct Student 
{
  int num;
  char name[20];
  char  sex;
  float sorce;
};
struct Student student;
void add()
{

  int num;
  char name[20];
  char sex;
  float sorce;
printf("学号:");
scanf("%d",&num);
printf("姓名:");
scanf("%s",name);
printf("性别:");
scanf("%c",&sex);
printf("分数:");
scanf("%f",&sorce);
student.num=num;
strcpy(student.name,name);
student.sex=sex;
student.sorce=sorce;

 }

在调试输入时,如果写为scanf("%c",&sex);会出现下面的问题:

学号:45

姓名:wang

性别:分数:90;

性别无法输入直接跳过;

解决办法:

将scanf("%c",&sex);改为scanf(" %c,"&sex);

在%c前面加一个空格,就好了

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

crazy的蓝色梦想

如果对你有帮助,就鼓励我一下吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值