Sprache ist C. Ich habe ein Array von char * -Typen (char * array []/char ** -Array) als Funktionsargument, und ich möchte sie alle auf separate Zeilen wie diese drucken:printf stürzt nach erfolgreichem Drucken ab
Jetzt aus irgendeinem Grund, mit einer bestimmten Eingabe, es verwaltet, um alle Werte zu drucken, aber sofort abstürzt, nachdem das letzte * Array gedruckt wird. Nach dem letzten Druck wird also nicht mehr "nach dem letzten Druck" gedruckt. Leider bin ich auf Windows 7 mit netbeans C Unterstützung, ohne gdb. Es gab einige Probleme, als ich versuchte, es auf Netbeans zu installieren, aber das ist eine andere Geschichte.
Vor allem, was könnte das verursachen? Zweitens, wie könnte ich ohne gdb versuchen, dieses Verhalten am besten zu debuggen? Wenn jemand eine Antwort gibt, die mir hilft, das Problem zu beheben und es zu lösen, werde ich auch davon Punkte gewähren. Einige Hintergrundinformationen bezüglich des Funktionsarguments, das den Absturz verursacht: Ich habe strtok verwendet, um char ** arr aus char * string zu generieren, wobei ein Leerzeichen als Delimeter verwendet wurde.
EDIT:
Mehr Informationen: Wenn ich in der gleichen Funktion versuchen, den letzten * Array printf, es funktioniert gut, und das Programm wird normal fortgesetzt. So funktioniert das:
printf("%s\n", array[4]);
Der letzte Index vor NULL passiert 4 in meinem Testfall. Aber dann, wenn das gleiche wie in der vorherigen Schleife gemacht wird, schafft es es, es zu drucken, stürzt aber sofort ab und druckt die zweite Zeile nicht mehr.
Es ist wahrscheinlich, dass das letzte Array-Element nicht mit dem Zeiger "NULL" gesetzt ist. Du brauchst etwas wie 'array [n] = NULL;', wobei 'n' die Anzahl der Strings ist. Natürlich würde das "Array" einen Raum für "n + 1" Elemente benötigen. –