Füllung einen char pointer in ein struct
Ich habe ein "Auto" struct mit einem Modell (char *Typ) und das Jahr des Modells (int Jahr). Ich habe eine Funktion, erstellen Sie ein neues Auto struct; es ist jedoch seg, der zu einem Fehler beim kopieren der char-Zeigern. Dieser soll, erstellen Sie einen neuen Knoten für eine verknüpfte Liste.
Car *newCar(char *model, int year){
Car *new = malloc(sizeof(Car));
new->year = year;
new->model = malloc(MAX_LENGTH*sizeof(char));
strcpy(new->model, model);
new->next = NULL;
return new;
}
Wie wäre
Sie sollten überprüfen, dass
danke; aber das Probleme ist immer noch da.
Xu char *Modell, wird nie NULL, weil es ist die scan-in-Daten aus einer Datei in eine andere Funktion.
er kann sicher verwenden Sie neue mit einem c-compiler
new->model = malloc(strlen(model) + 1)
?Sie sollten überprüfen, dass
char *model
ist nicht NULL
. Auch als gute Praxis, überprüfen Sie immer die Rückgabe der malloc
s.danke; aber das Probleme ist immer noch da.
Xu char *Modell, wird nie NULL, weil es ist die scan-in-Daten aus einer Datei in eine andere Funktion.
er kann sicher verwenden Sie neue mit einem c-compiler
InformationsquelleAutor kyle | 2013-03-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, diese :
dies verhindert, dass Sie von einem Fehler, wenn das Modell NULL ist, sonst malloc Sie die genaue Menge an Speicherplatz und strcopy; plus, können Sie
free(new->model)
am Ende in allen Fällen.InformationsquelleAutor Edouard Thiel
Hier Ihr Modell ist Zeichen Zeiger.
Aber strcpy benötigt zwei Argumente - das sollte
array
odercharacter pointer to which memory allocated by malloc or calloc
Aber Ihre
strcpy();
nimmt ein argument als character-pointer, die nicht akzeptiert werden.so machen
new->model = malloc(strlen(model) + 1)
und dann schreiben Sie Ihrestrcpy
wird es funktionieren.()
new->model = strdup (model);
die nicht die gleiche in einer einzigen Instruktion.Außer
strdup
ist nicht standard (obwohl es kann leicht umgesetzt werden).strdup() ist konform zu SVr4, 4.3 BSD, POSIX.1-2001.
InformationsquelleAutor Hitesh Menghani
Für zukünftige Referenz diese Funktion fixiert mein Problem...
strlen(model)+1
. Wenn dies schien das Problem beheben, Sie wurden zu Fuß auf Eierschalen!du hast Recht! Ich wurde durch meine alten Hausarbeiten aus dem ersten Jahr und erkannte, dass ich nie geschrieben die Lösung. Ich aktualisiert meine Antwort zu reflektieren, die Fehler, die Sie gefangen.
InformationsquelleAutor kyle
Haben Sie einen Blick auf den folgenden code und vergleichen Sie es mit Ihrem Programm, bin sicher, Sie werden herausfinden, was falsch mit Ihrem Programm
InformationsquelleAutor Barath Ravikumar