Doppelte While-Schleife mit 2-dim Arrays

mc_gulasch

Erfahrenes Mitglied
Hi Forum,

fast schäme ich mich, eine solche Frage hier zu stellen, aber ich komm um Verrecken nicht auf den Fehler:

Code:
void print_table(unsigned int **table)
{
	int i,j;
	i=0;j=0;
	while (table[i][j])
	{	
		while((table[i][j]))
		{
			printf("%u ",(table[i][j]));j++;
		}
	}
	printf("\n");
	i++;
         j=0;
}
Die Tabelle hat 81 Zeilen, geht also von 0..80, allerdings geht die Funktion bei 81 nicht aus der Schleife raus, sondern schmeisst einen Fehler:
Die Anweisung in "bla" verweist auf Speicher in "0xfdfdfdfd"
Das ist doch Null-Pointer, oder? Klar, die Tabelle geht nur bis 80, aber wie krieg ich sie dazu automatisch da rauszugehen? Schließlich werden bei mir nicht alle Tabs bis genau 80 gehen ;-)

Danke für die Hilfe.


//edit: Klammer entfernt!
 
Zuletzt bearbeitet:
Du könntest das so machen indem du nach der letzten gültigen Zeile noch zusätzlich eine Zeile einfügst die du auf NULL setzt. Dann solltest du einfach prüfen ob die Zeile gültig ist:
C:
table[81] = NULL; /* table hat 81 richtige Spalten von 0..80 und zusätzlich eine NULL Spalte */

int i = 0, j = 0;
while (table[i]) {
  ...
}
Gruß

PS: Du hast da eine schließende Klammer zuviel drin.

PPS: Wenn du auch die Spaltenanzahl variabel machen willst, geht das genauso. Dann mußt du allerdings auch für die Zeile ein Array mit SPALTEN+1 Elementen an die Zeile zuweisen.
 
Ja, das mit der Klammer passt scho. Hab nur überflüssigen Code entfernt.

Deine Idee ist prima...werd ich demnächst testen. Gerade mach ich´s halt noch mit überhauptnicht nervigen "globalen" Variablen.

Danke!
 
Zurück