2016-04-12 4 views
1

grundsätzlich nehme ich Benutzereingaben und benutze es zum Löschen aus einer Liste, wenn dieser Fehler gerade ausgelöst wurde. Der Code funktionierte buchstäblich vor einer Stunde, also weiß ich nicht, warum Visual Studio jetzt einen Fehler macht.char * unterscheidet sich in den Ebenen der Indirektion von Char (*) [100]

char courseName[100]; 
scanf("%s", courseName); 
deletefromlist(&list, &courseName); 

deletefrom Listenfunktion nimmt (Courselist * self, char * data) als Argumente.

Wie kann ich diesen Fehler korrigieren und in Zukunft vermeiden? Prost!

+0

Mögliches Duplikat von [C - 'char \ * \ *' unterscheidet sich in den Ebenen der Indirektion von 'char (\ *) \ [6 \]'] (http://stackoverflow.com/questions/7524070/c- char-differents-in-level-of-indirection-from-char-6) –

Antwort

5

Das zweite Argument der Funktion akzeptiert char *, daher sollten Sie courseName statt &courseName übergeben.

Oder abhängig von der Art der deletefromlist, möchten Sie vielleicht den Argumenttyp ändern.

+0

ja ich habe das versucht, der Code bricht immer noch. Ich muss mir vielleicht meine Löschfunktion genauer ansehen. Aber warum ist char * nicht dasselbe wie char (*)? da sie beide auf etwas zeigen –

+0

Sie haben 'courseName' als ein Array von' char' deklariert, also verhält sich 'courseName' (fast) wie ein' char * 'Pointer (es zeigt auf das erste' char' des Arrays). Stellen Sie in Ihrer Löschfunktion sicher, dass Sie über die richtigen Maßnahmen verfügen, um einen Überlauf beim Behandeln des Arrays zu vermeiden. – Quentin

+0

ah ja, das macht Sinn, da ich Speicherzugriffsverletzungen bekomme. Prost Mate –

Verwandte Themen