간단한 학생 데이터베이스 프로그램 연습을하고 있고 구조체 배열을 초기화하는 방법을 잘 모르겠습니다. 컴파일 시간에 알려진 값으로 배열 stdt[]
의 처음 세 요소를 초기화하려고 시도하고 다음 3 명의 학생 정보가 사용자 입력에서 채워집니다. 컴파일하면 오류가 발생합니다 :C에서 구조체 배열 초기화하기
lab7.c: In function ‘main’:
lab7.c:16:9: error: expected expression before ‘{’ token
stdt[0]={"John","Bishop","s1234","Inf",'m',18};
^
lab7.c:17:9: error: expected expression before ‘{’ token
stdt[1]={"Lady","Cook","s2345","Eng",'f',21};
^
lab7.c:18:9: error: expected expression before ‘{’ token
stdt[2]={"James","Jackson","s33456","Eng",'m',17};
^
어떻게하면됩니까?
#include <stdlib.h>
#include <stdio.h>
typedef struct {
char *name;
char *surname;
char *UUN;
char *department;
char gender;
int age;
} student_t;
int main() {
int i;
student_t stdt[6];
stdt[0]={"John","Bishop","s1234","Inf",'m',18};
stdt[1]={"Lady","Cook","s2345","Eng",'f',21};
stdt[2]={"James","Jackson","s33456","Eng",'m',17};
for(i=3;i<6;i++) {
printf("First name: \n");
scanf("%s",stdt[i].name);
printf("Last name: \n");
scanf("%s",stdt[i].surname);
printf("UUN: \n");
scanf("%s",stdt[i].UUN);
printf("Department: \n");
scanf("%s",stdt[i].department);
printf("Gender (m/f): \n");
scanf("%c",stdt[i].gender);
printf("Age: \n");
scanf("%d",stdt[i].age);
}
return 0;
}
값이 실제로 입력되었는지 확인하려면 각 scanf() 호출의 반환 값을 확인해야합니다. – user3629249
각 scanf() 형식 문자열은 선행 공백을 포함해야하므로 '\ n'과 같은 사용되지 않은 공백이 사용됩니다. 그렇지 않으면 scanf()가 일부 값을 입력하지 않고 중단 될 수 있습니다. – user3629249