2017-11-09 1 views
-1

Ich habe mich schon seit einiger Zeit damit beschäftigt, aber ich bekomme immer noch die gleiche Warnung: "Inkompatible Zeigertypen übergeben 'char * [15]' an Parameter vom Typ 'char *' [-Wincompatible -pointer-types]: strncpy (Person-> Vorname, Fn [j], NAME_SIZE - 1); "Inkompatible Zeigertypen in C

while (i < numPersons) { 
    j = rand() % NUM_NAMES; 
    person->firstName[NAME_SIZE - 1] = "\0"; 
    strncpy(person->firstName, fn[j], NAME_SIZE - 1); 
    j = rand() % NUM_NAMES; 
    person->familyName[NAME_SIZE - 1] = "\0"; 
    strncpy(person->familyName, sn[j], sizeof(person->familyName) - 1); 
    if (rand() % 2) { 
     person->emplyeeOrStudent = 1; 
     populateStudent(&person->stu); 
    } else { 
     populateEmployee(&person->emp); 
     person->emplyeeOrStudent = 0; 
    } 
    person++; 
    i++; 
} 

Dies ist für die Struktur Person:

struct Person{ 
    char *firstName[15]; 
    char *familyName[15]; 
    char *telephone[10]; 
    union combine comb; 
    unsigned int emplyeeOrStudent:1; 
}; 
+0

zeigen Sie die Struktur 'person' – coderredoc

+0

was ist' fn' und 'sn'? – yano

+2

Ich denke Person-> Vorname [NAME_SIZE - 1] = "\ 0"; -> Person-> Vorname [NAME_SIZE - 1] = '\ 0'; –

Antwort

0

, wenn Sie passieren Person-> vorName Sie im Grunde char geben ** statt char * Sekunde - wenn die Person nicht Ihre Kopie vorab zugewiesene wird, fehlgeschlagen, weil Sie nicht in char * -Feld kopieren können, das auf Datensegment zugewiesen ist und im Grunde const!

Verwandte Themen