Textdatei in einzige Variable lesen
-
Hi,
ich möchte eine Text-Datei in eine einzige Variable lesen. Dann eine neue Datei erzeugen, eine neue Zeile einfügen und danach die Variable (alte Dateiinhalt) schreiben. Ganz einfach etwas in die erste Zeile einer Datei schreiben.
Hier meine Geistesblitze:FILE *fp_alert; char zeile[255]; char *buffer; if ((fp_alert = fopen("alert_file", "r+")) == NULL) { /* ERROR */ ; printf ("Alert-Datei konnte zum schreiben einer Störung nicht geöffnet werden"); exit; } /* erstes mal Speicher freigeben */ buffer = (char*)malloc(1); /* Alert Datei einlesen */ while ( fgets(zeile, sizeof(zeile), fp_alert) ) { buffer = (char*)realloc(buffer , strlen(buffer)+strlen(zeile)+1); strcpy (buffer, zeile); }
würde sowas funktionieren ?
Ich bin mir nicht sicher da ich malloc usw. sehr selten einsetze.Danke
worst_case[ Dieser Beitrag wurde am 13.04.2003 um 19:47 Uhr von worst_case editiert. ]
-
du koennest die einzelnen zeilen der datei
auch in eine linkedlist einlesen.
-
du wolltest doch nur eine Zeile am anfang???(eigentlich egal kannst auch zeilen nummern benutzen) einfügen oder??
die einfachste Lösung istwhile (zeileholen(ausDatei)) { zähleZeilen++; wenn (zähleZeile == ZeileSoundSo && ZeileSoundSo != 0 )/* ZeileSoundSo == 0 */ schreibe(NeueZeile); /* == nichts hinzufügen */ /*nur kopieren */ zeileschreiben(InneueDatei); /* aus alter Datei */ }
-
strcpy(buffer,zeile);
sinnlos.
du überschreibst damit den inhalt von buffer.
wenn dann nimm strcataber das ganze ist einfach nur lahm. (stell dir das mal bei einer 1MB datei vor. bei ca. 80 Zeichen pro zeile wären das unmengen an mallocs, strlens und strcats...
da es sich um eine textdatei handelt, mach doch ein fseek(...,SEEK_END) und dann ein ftell() dann hast du die ungefähre dateigröße. dann hau noch 10% dazu und mach n malloc.
das ganze wird dann mit fread() aufeinmal eingelesen - und du bist WESENTLICH schneller.