2016-06-04 3 views
-2

Ich versuche, ein Programm zu schreiben, das die Informationen von Studenten sammelt. Ich verwende eine Reihe von Studenten (structs)Warum funktioniert die Zuweisung von Wert zu Array-Struktur nicht C

typedef struct { 
    char name[50]; 
    struct Course* course; 
}Student; 

und in meinem main() Ich habe diese

Student* stds = (Student*) malloc(app.std_cnt * sizeof(*stds)); 

getStdData(stds); 

hier ist die getStdData Funktion

void getStdData(struct Student *students){ 

int i; 
char name[50]; 

Student std; 

printf("\n"); 

for(i = 0; i < app.std_cnt; i++){ 

    printf("std [%i] name : ",i+1); 


    scanf("%s",&name); 

    strcpy(std.name,name); 

    students[i] = std; 

} 
} 

wenn ich kompilieren bekomme ich

Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x86 
Copyright (C) Microsoft Corporation. All rights reserved. 

gpa.c 
gpa.c(124): error C2440: '=': cannot convert from 'Student' to 'Student' 

kann mir jemand sagen, was t ich mache falsch? und warum ist es über eine Konvertierung von Student zu Student zu beklagen? Sind sie nicht vom selben Typ?

+1

Mögliche Duplikate: [Unterschied zwischen 'struct' und 'typedef struct' in C?] (Http://stackoverflow.com/questions/612328/difference-between-struct-and-typedef-struct-in-c) – paulsm4

Antwort

5

In C, struct Student und Student können zwei verschiedene Typen sein. Student kommt von Ihrem typedef und struct Student würde aus

struct Student { /* ... */ }; 

So Ihre Funktion

void getStdData(Student *students) 

Für eine gute Diskussion über die Situation sein sollte, betrachten this answer.

+0

Wie kann ich dann das Array drucken? –

+0

Ändern Sie einfach die Funktionsdeklaration, wie ich vorschlagen (entfernen Sie die 'struct' von' void getStdData (struct Student * Studenten) {') – hcs

+0

sorry ... fragte etwas anderes. –