C_Uranium 2022-11-07 10:09 采纳率: 100%
浏览 10
已结题

同时写入两个结构体,分别为他们赋值。

问题遇到的现象和发生背景

写入两个结构体,为啥第二个结构体里第一个变量不让我写入。

用代码块功能插入代码,请勿粘贴截图

#include<stdio.h>
#include<string.h>
#define MAXNAME 21 /姓名的最大长度/
#define MAXGENDER 3 /性别的最大长度/
char * s_gets(char* st,int n);

struct student1 {
char NAME1[MAXNAME];
char GENDER1[MAXGENDER];
int number1;
};

struct student2 {
char NAME2[MAXNAME];
char GENDER2[MAXGENDER];
int number2;
};

int main(void)
{
struct student1 stu1;

printf("student1\nWhat is your name?\n");
s_gets(stu1.NAME1,MAXNAME);
printf("please enter your gender.\n");
s_gets(stu1.GENDER1,MAXGENDER);
printf("please enter your student id.\n");
scanf("%d",&stu1.number1);

struct student2 stu2;

printf("student2\nWhat is your name?\n");
s_gets(stu2.NAME2,MAXNAME);
printf("please enter your gender.\n");
s_gets(stu2.GENDER2,MAXGENDER);
printf("please enter your student id.\n");
scanf("%d",&stu2.number2);

printf("The first student`s information is:\n");
printf("NAME:%s     GENDER:%s     STUDENT ID:%d\n",
       stu1.NAME1,stu1.GENDER1,stu1.number1);
printf("The second student`s information is:\n");
printf("NAME:%s     GENDER:%s     STUDENT ID:%d\n",
       stu2.NAME2,stu2.GENDER2,stu2.number2);


return 0;

}

char *s_gets(char *st,int n)
{
char *str;
char *discover;

str=fgets(st,n,stdin);
if(str)
{
    discover = strchr(st,'\n');
    if(discover)
        *discover= '\0';
    else
        while (getchar() != '\n')
            continue;
}
return str;

}

运行结果及报错内容

输入第二个学生的名字时
s_gets(stu2.NAME2,MAXNAME);
这一行语句程序好像跳过了,不让我输入,不知道为啥。

  • 写回答

2条回答 默认 最新

  • 牛牛要坚持 2022-11-07 10:14
    关注

    因为gets会以回车作为读取结束标志,
    你读取上一个结构体里最后一个变量时最后按了回车,下一个结构体第一个变量读取的时候把那个回车当做字符读取然后结束了
    解决方法在他们之间用一个getchar()函数读取掉回车字符

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月15日
  • 已采纳回答 11月7日
  • 创建了问题 11月7日

悬赏问题

  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答