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

  不知道大家有没有遇到,在结构体中,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前面加一个空格,就好了

在C语言,如果你想利用循环变量往结构体输入数字和字符,你可以使用以下方法。首先,你需要定义一个结构体类型,然后通过循环来填充结构体实例的各个字段。 以下是一个简单的示例: ```c #include <stdio.h> // 定义一个结构体类型,例如包含一个整数和一个字符数组 struct Data { int number; char character; }; int main() { struct Data data[10]; // 假设我们有一个包含10个结构体实例的数组 int i; // 假设我们要用循环变量i来填充结构体数组 for (i = 0; i < 10; i++) { printf("请输入第%d个结构体的数字和字符:\n", i + 1); scanf("%d %c", &data[i].number, &data[i].character); // 通过循环输入每个结构体的数据 } // 输出刚才输入的数据,验证输入是否成功 printf("\n输入的数据是:\n"); for (i = 0; i < 10; i++) { printf("结构体%d的数字:%d, 字符:%c\n", i + 1, data[i].number, data[i].character); } return 0; } ``` 在这个例子,我们定义了一个名为`Data`的结构体类型,它包含一个`int`类型的`number`和一个`char`类型的`character`。在`main`函数,我们创建了一个`Data`类型的数组`data`,然后使用`for`循环来接受用户输入,并将输入的数据分别存储到数组每个结构体的相应字段里。 当使用`scanf`函数输入字符时,应当注意在`%c`前面加一个空格,以确保正确地跳过任何前面的空白字符(如换行符)。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值