while(array)
-
Hallo
ich habe folgentes Problem ich will ein kleines Prgramm zu üben machen und jetzt will ich das das Array solange auslesen biss es leer ist dazu dieht unten die while schleife!
wie mach ich das dann der code geht zwar beim starten kommt eine Fehler meldung
unhandelt exception in array.exe#include<stdio.h> #include<conio.h> char vertreter[2][20] = {"Lauber, Otto","Forsch, Heidi"}; int artikel[2][4] = {{20,5,30,17},{150, 120, 90, 110}}; int main(){ int i,j; for(i =0; i<2;i++) { printf("\n\nVertreter: %s",vertreter[i]); printf("\nVerkauft Stueckzahlen: "); while(artikel[i][j]) //hier kommt die gehler maldung { printf("%8d", artikel[i][j]); j++; } } printf("\n"); return 0; }
-
Du setzt nirgends den Zähler (j) zurück - und du hast auch nicht die geeignete Datenstruktur, um so auf's Array-Ende zu prüfen. d.h. du liest uninitialisierten Speicher.
-
Hi
ich hab jetzt hab ich J 0 zugewiesen aber ich bekomme blödsin heraus!
beim ersten kommt alles also von 20 bis zum schluss und 2 mal -2
und beim zweiten kommt das was sollte und auch 2 mal -2mfg mike4004
-
Schätzungsweise rödelst du über die Array-Grenzen. Vllt. prüfst du in der while Schleife ob i < 2 und j < 4 ist?
-
Das ganze ist eigentlich dynamsich ich hab das hier nur so angegeben!
Des halb wollte ich ja das while() damit es prüft ob der array existiert!
-
Selbst wenn es dynamisch ist, musst du irgendwo Speichern wie groß dein array ist. Benutze das als Abbruchbedingung. So wie jetzt wird das nix.
-
Deine Konstruktion "while(a[i]){...;i++;}" kann nur funktionieren, wenn das Array im String-Stil gespeichert ist (letzter Wert=0), andernfalls greift deine Abbruchbedungung nicht und du wanderst in "fremde" Speicherbereiche - daß da nur Müll rauskommt ist wenig verwunderlich.