2017-12-01 18 views
-2

그래서 성 및 나이와 같은 기본 요소 및 이름에 구조체가있는 학생 데이터베이스를 만들려고합니다. 또한 구조체 안에는 학생의 학년이 들어있는 또 다른 구조체가 있습니다. 어떻게하면 좋을까요?C 프로그래밍 : 구조체 내에서 구조체를 사용하여 연결된 목록을 만드는 방법

+0

처럼 보일 수

struct student{ char name[20]; int age; char gender[7]; struct grades gr; struct student *nextStudent; }; 

인쇄 기능을 내가 여기에있는 질문이 정확히 무엇인지 확실하지 않습니다 당신이 이미 문제를 스스로 해결했습니다 'students' 구조체를 만들면 그 안에'grades' 구조체가 이미 있습니다. 이 경우에만 예외가됩니다. 'grades' 필드는 포인터였습니다. – X39

+1

'struct s tudents' -'struct student'이어야합니다. – pm100

+1

'struct grades;'는 뭔가 빠져있는 것처럼 보입니다. 'struct grades grds; 아마도? – WhozCraig

답변

0

'학생 구조에서 등급 구조체에 액세스하려면 어떻게해야합니까?' 대답은 이런 식입니다 - 일을 가정하는 것은 이해 귀하의 기본적인 문제는 당신이 당신의 students 구조 잘못을 가지고 당신을 misguiding된다는 점이다

st->grades.math[0] = 'A' 
0

학생 instnace 포인터를합니다. 이 봐 어떻게 작동하는지 이해하려고 노력하고 그것은 당신이 필요 왜 당신은 당신의 문제를 해결하는 데 사용할 수있는 방법이

void print (void){ 
    for(struct student *stud = root; stud != NULL; stud = stud->nextStudent){ 
     printf("Name: %s\n",stud->name); 
     printf("Grades: %s, %s, %s, %s\n", stud->gr.math, stud->gr.history, stud->gr.science, stud->gr.writing); 
    } 
} 
+0

여기에 이름을 쓰지 않아서 고쳐졌습니다. – Forcatos

+0

하지만 컴파일러가 'grad'이이 함수에서 초기화되지 않은 채로 사용될 수 있다고 말하는 경우에도 문제가 발생합니다. [-Waybe-uninitialized] – Forcatos

+0

코드를 살펴보고 각 학생의 평점 구조를 처리하는 올바른 방법을 살펴보십시오. gr라고하면, 'stud-> gr'이라고하면, 그 구조의 멤버는 'stud-> gr.math'처럼 참조 될 것입니다. – AgapwIesu