问题遇到的现象和发生背景
写入两个结构体,为啥第二个结构体里第一个变量不让我写入。
用代码块功能插入代码,请勿粘贴截图
#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);
这一行语句程序好像跳过了,不让我输入,不知道为啥。