Problem mit laden-Funktion
-
Moin moin!
Ich habe mein Problem inzwischen selber lösen können, aber danke für die Mühe die ihr euch gemacht habt!Wen es interessiert, wie das ganze nun funzt: Ich hab neben der laden-funktion noch eine Funktion eingebaut, die sich um das zählen der zeilen kümmert.
Hier der codeLaden:
void laden() { char tempvar[9]; int i=0; int fehler=0; clrscr(); printf("Bitte geben Sie den Namen der zu lesenden Datei ein: "); getchar(); gets(dateiname); strcat(dateiname,".tab"); feld=zeilenzaehlen(dateiname); tabgr_festgel=1; if((stream = fopen(dateiname,"r")) == NULL) { printf("\nFehler beim Oeffnen! Weiter mit Eingabetaste!"); fehler=1; tabgr_festgel=0; goto weiter; } fgets(tempvar,11,stream); while(!feof(stream)) { tabelle[i]=atoi(tempvar); i++; fgets(tempvar,11,stream); } printf("\nDatei erfolgreich geladen!\nWeiter mit Eingabetaste."); if(fehler==0) { wertegeladen=1; spunter=1; } weiter: fclose(stream); getch(); getchar(); }
und die Funktion zum zählen der zeilen:
zeilenzaehlen(char name[80]) { int tempvar; int i=0; if((stream = fopen(name,"r")) == NULL) { goto weiter; } tempvar=fgetc(stream); while(!feof(stream)) { if(tempvar==10) { i++; } tempvar=fgetc(stream); } return i-1; weiter: fclose(stream); }
Also nochmal danke!
Mfg, Helmut`
-
Wie reservierst du den Speicher für die Tabelle?
Dein Lösungsansatz mit der Zeilenzahl ist in Ordnung.
Aber nur wenn dui Sicherstellst das du nicht mehr Zeilen liest als in deinem Feld platz haben.
Sonst läuft das Programm 95 % der Zeit rund und ab und zu stürzt es ab.Als entweder muß nach dem Feststellen der Größe ein ..alloc Funktion hin die entsprechend Speicher reserviert, oder in es muß das Ergebnis von Zeilenzählen gegen die maximalzahl der speicherbaren
Werte geprüft werden.