Inhalt einer Datei in String kopieren?
-
Hallo, ich möchte den Inhalt einer (Text-)Datei in einen String hineinkopieren.
Der String ist leer, und wird dann sozusagen von dem Dateiinhalt aufgefüllt.Beispiel:
Vorher: Inhalt der Textdatei: beispiel
Inhalt des Strings: ""Nachher: Inhalt der Textdatei: beispiel
Inhalt des Strings: "beispiel"Bislang bin ich hier:
#include <stdio.h> #include <C:\Program Files (x86)\CodeLite\upros\OnlyAbsatz.cpp> int main(void) { FILE *TD; char TD_name[10240]; int rc, ch, i=0; char string[]=""; printf("Name der Textdatei eingeben: "); fgets(TD_name, 10240, stdin); OnlyAbsatz(TD_name); // löscht das \n, das beim fgets angehängt wird printf("\nEingabe lautet: \"%s\"", TD_name); rc = 0; TD = fopen (TD_name, "rt"); if (TD == NULL){ printf("Fehler! Grund: \"fatal error: could not open the requested file\""); rc=1; } if (rc == 0){ ch = fgetc (TD); while (ch != EOF){ fputc (ch, string); ch = fgetc (TD); } } fclose(TD); //Hier würd ich gern den Inhalt des Strings ausgeben, muss aber den String am Ende ja terminieren. Aber ich weiss die Länge des Inhalts nicht! rc=0; getchar(); return 0; }
Danke jetzt schon!
-
Du kannst doch in deiner Schleife mitzählen. Außerdem musst du wissen wie groß die Datei ist, damit du genug Speicher anfordern kannst.
Strings wachsen in C nicht dynamisch.Oder du springst mit
fseek
an das Dateiende, ermittelst mitftell
die Länge der Datei und springst mitfseek
oderrewind
wieder an den Dateianfang.
Dann besorgst du dir mitmalloc
genug Speicher und liest die Datei komplett mitfread
ein.