-3
構造体を配列で使用する方法を解明しようとしており、コードのように配列の最初の3つの項目を初期化する方法を理解していません。文字列/文字として宣言しているにもかかわらず、すべての整数であると言っているので、配列の値を印刷またはスキャンしようとするとエラーが発生します。どんな助けも素晴らしいだろう、ありがとう。構造体と配列の初期化
#include <stdlib.h>
#include <stdio.h>
#define MAXLEN 100
typedef struct{
char name; <<have now changed all to [MAXLEN+1]
char surname; <<
char UUN; <<
char department; <<
char gender;
int age;
} student_t;
int main(void){
student_t details[5];
int i, n;
details[0].name = "John"; <<should all the '=' be ',' instead?
details[0].surname = "Bishop"; <<do not understand how to initialize
details[0].UUN = "s1234";
details[0].department = "Inf";
details[0].gender = 'm';
details[0].age = 18;
details[1].name = "Lady";
details[1].surname = "Cook";
details[1].UUN = "s2345";
details[1].department = "Eng";
details[1].gender = 'f';
details[1].age = 21;
details[2].name = "James";
details[2].surname = "Jackson";
details[2].UUN = "s3456";
details[2].department = "Eng";
details[2].gender = 'm';
details[2].age = 17;
for(i = 3; i < 6; i++){
printf("Enter first name second name UUN department gender age: \n");
scanf(" %s %s %s %s %c %d", details[i].name, details[i].surname, details[i].UUN, details[i].department, details[i].gender, details[i].age);
}
for(n = 0; n < 6;n++){
printf("details: %s", details[n].name);
}
return EXIT_SUCCESS;
}
あなたの構造体メンバは単なる 'char'オブジェクトです。どのようにあなたの文字列のそれぞれが単一の 'char'に収まると思いますか? – AnT
ヒントは次のとおりです。charは1文字しか保持できません。あなたは文字列を保持したい。どうしたらいい? – struthersneil
そうだけど、文字列として宣言するたびに、エラーがscanfに現れ、それがchar **であり、文字列が必要であると言っています。何らかの理由で示されているようにそれを残して、それを止める唯一の方法でした – string