我編寫了一個代碼來輸入學生信息,如下所示。出現該問題時,學生ID追加Lastname.I知道錯誤在於進入ID和姓氏,但我不明白,並修復它當結構體字符串重疊
#include "stdio.h"
#include "string.h"
typedef struct Fullname_s{
char Lastname[20];
char Fistname[10];
}Fullname;
typedef struct Birthday_s{
int Day,Month,Year;
}Birthday;
typedef struct Mark_s{
float mark[10];
}Mark;
typedef struct SV{
char ID[8];
Fullname F_name;
Birthday B_day;
char Sex[5];
Mark _Mark;
}sv;
sv s[100];
void inputsv(sv s[],int *n);
void printinfo(int i);
void output(sv s[],int n);
int main(){
int n;
inputsv(s,&n);
output(s,n);
}
void inputsv(sv s[],int *n){
printf("--------Enter Students information--------\n");
printf("Enter number of students \n");
scanf("%d",n);
int i=0;
while(i<*n){
int x;
printf("-------------------------Student %d-------------------------- \n",i+1);
printf("ID Student : ");
fflush(stdin);
scanf("%s",&s[i].ID);
gets();
printf(" Lastname : ");
fgets(s[i].F_name.Lastname,20,stdin);
printf(" Fistname : ");
gets(s[i].F_name.Fistname);
do{
puts("Enter 0 :MALE");
puts("Enter 1 :FEMALE");
scanf("%d",&x);
if(x==0)
strcpy(s[i].Sex,"MALE");
else
strcpy(s[i].Sex,"FEMALE");
}while(x!=0&&x!=1);
printf(" Birthday : ");
scanf("%d%d%d",&s[i].B_day.Day,&s[i].B_day.Month,&s[i].B_day.Year);
for(int j=0;j<10;j++){
printf(" Mark %2d:",j+1);
scanf("%f",&s[i]._Mark.mark[j]);
}
i++;
gets();
}
}
void output(sv s[],int n){
printf("STUDENTS INFORMATION \n");
for(int i=0;i<n;i++){
printf("--------------------\n");
printf(" STUDENT %2d\n",i+1);
printinfo(i);
printf("-------------\n");
}
printf("------------------------\n");
}
void printinfo(int i){
printf(" ID STUDENT :%s\n",s[i].ID);
printf(" FULLNAME :%s %s \n",s[i].F_name.Lastname,s[i].F_name.Fistname);
printf(" BIRTHDAY :%2d-%2d-%4d \n",s[i].B_day.Day,s[i].B_day.Month,s[i].B_day.Year);
printf(" SEX :%s\n",s[i].Sex);
for(int j=0;j<10;j++){
printf(" MARK %2d : %0.2f \n",j+1,s[i]._Mark.mark[j]);
}
}
錯誤作爲picture.Thanks所有 enter image description here
不要'fflush(stdin)'。 '性別[5]'不包含'女性'。你只爲男性設計嗎?最大身份證號碼有多久? –
https://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557 – melpomene
感謝您的回覆。但問題出在ID和姓氏 – Divide