私はこの混乱の中でしばらく行ってきましたが、私はどこで間違っているのか分かりませんでした。ポインタのようなものであれば、構造体配列内の一致を検索する
表示されているタスク:学生ID、名前、生年月日、成績を含む構造配列を入力しようとしています。次に、ユーザーに与えられた一致IDで検索します。
この件に関するお手伝いをいただき、ありがとうございます。また、フランスの部品について事前にお詫び申し上げます。
// Part 1
struct Date{
int day;
int month;
int year;
};
// Part 2
struct Student{
int ID;
char name[20];
char lastname[20];
struct Date DOB;
int notes[J];
};
// Part 3
void FillStudentList(struct Student E){
int i;
printf("\nInsert ID: ");
scanf("%d", &E.ID);
printf("Insert name: ");
scanf("%s", &E.name);
printf("Insert last name: ");
scanf("%s", &E.lastname);
printf("Insert date of birth: ");
scanf("%d %d %d", &E.DOB.day, &E.DOB.month, &E.DOB.year);
printf("Insert notes: ");
for(i=0; i<J; i++)
scanf("%d", &E.Notes[i]);
}
// Part 4
void ShowByNb(int Nb, struct Student E[], int NbStudents){
int j, i;
for(i=0; i<NbStudents; i++){
if (E[i].ID== Nb){
printf("\nID: %d", E[i].ID);
printf("\nName: %s", E[i].name);
printf("\nLast Name: %s", E[i].lastname);
printf("\nDate Of Birth: %s-%s-%s", E[i].DOB.day, E[i].DOB.month, E[i].DOB.year);
printf("\nNotes: ");
for(j=0; j<J; j++){
printf("%d", E[i].Notes[j]);
}
}
else
printf("\nInvalid Student!\n");
}
}
// Part 5
void main(){
int i, x;
struct Student E[N];
for(i=0; i<N; i++){
printf("\n\nStudent #%d", i+1);
FillStudentList(E[i]);
}
printf("\n\nSearch student by NB: ");
scanf("%d", &x);
ShowByNb(x, E, N);
}
あなたが取得している出力は何ですか? Plz、あなたの変数と関数のより良い名前を使用します。 –
'Dat'の要素は' int'ですが、あなたは '%d'ではなく'%s'でそれらを読み込んでいます。それは動作しません。 – Barmar
@ViniciusZaramella申し訳ありませんが、これはフランス語のプロジェクトです。名前がフランス語になっている理由です。私が得ている出力は "Invalid Student!"です。私が働かなければならない検索をしようとするとき。それは二度書き込まれます。編集:私はそれを修正しました –