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 mit ftell die Länge der Datei und springst mit fseek oder rewind wieder an den Dateianfang.
    Dann besorgst du dir mit malloc genug Speicher und liest die Datei komplett mit fread ein.


Anmelden zum Antworten