Ausgabe aus einer Textdatei -> Unsinn???



  • Hallo allerseits.
    Ich bin C-Anfänger und habe ein problem mit der Ausgabe eines Textes aus einer Datei.
    Wenn ich
    Das Programm laufen lasse hängt es mir bei der Ausgabe noch einen ganzen Rattenschwanz an kryptischen Zeichen an.

    Ich habe jetz schon 2 stunden nach dem Fehler gesucht, ich finde ihn einfach nicht. Wäre nett, wenn sich jemand meinem Problem annehmen könnte.

    Hier ist der Quellcode.

    printf("Bitte geben Sie ihren Text, der in die Datei rein soll, hier ein:");
    char texteingabe[100];
    scanf("%s",&texteingabe);
    
    FILE *datei;
    datei = fopen ("testdatei.txt", "w");
    fprintf (datei, texteingabe);	
    
    char text[100+1]; 
    fscanf (datei, "%100c", text);
    printf ("%s\n", text);  
    fclose (datei);
    


  • Versuch mal...

    fgets(texteingabe, 100, stdin);
    //anstatt scanf
    


  • Nimm das fclose weiter hoch...

    printf("Bitte geben Sie ihren Text, der in die Datei rein soll, hier ein:");
    char texteingabe[100];
    fgets(texteingabe, 100, stdin);
    texteingabe[strlen(texteingabe)-1]='\0'; //entfernt den Zeilenumbruch
    
    FILE *datei;
    datei = fopen ("testdatei.txt", "w");
    fprintf (datei, texteingabe);    
    fclose (datei); //Hier her nehmen
    
    char text[100+1]; 
    fscanf (datei, "%100c", text);
    printf ("%s\n", text);
    


  • mh...nun kommen leider nurnoch diese kryptischen zeichen...
    der Code sieht jetzt wie folgt aus:

    char texteingabe[100];
    printf("Bitte geben Sie ihren Text, der in die Datei rein soll, hier ein:");
    scanf("%s",&texteingabe);
    
    FILE *datei;
    datei = fopen ("testdatei.txt", "w");
    fprintf (datei, texteingabe);    
    
    char text[100+1]; 
    fgets(texteingabe, 100, stdin);
    printf ("%s\n", text);  
    fclose (datei);
    

    was bedeutet denn das stdin?



  • Schau dir meinen Beitrag noch mal genau an....
    Nimm fgets etc. weiter nach oben...

    Übrigens wozu braucht es den zweiten Teil

    char text[100+1]; 
    fscanf (datei, "%100c", text);
    printf ("%s\n", text);
    

    Der obere reicht völlig aus

    printf("Bitte geben Sie ihren Text, der in die Datei rein soll, hier ein:");
    char texteingabe[100];
    fgets(texteingabe, 100, stdin);
    texteingabe[strlen(texteingabe)-1]='\0';
    


  • An hand des 2. Teils versuch ich rauszubekommen, wie man den Inhalt der Datei wieder ausliesst.

    Das reinschreien klappt ja wunderbar, lässt sich auch über windows texteditor bestätigen.

    Nur die Ausgabe als solches macht Probleme 😞





  • So, mitlerweile lässt sich das auch auslesen, der fehler stckte im %100c....es musste %100s heissen.

    Allerdings wenn ich mehrere Sachen in die Datei schreibe, dann wird immer nur der erste Eintrag angezeigt.

    char texteingabe[1001];
    printf("Bitte eingeben");
    fgets(texteingabe, 100, stdin);
    
    FILE *datei;
    datei = fopen("testdatei.txt", "a+");
    fprintf(datei, textausgabe);
    fclose(datei);
    
    char text[1001];
    
    datei = fopen("testdatei.txt", "r");
    fscanf(datei, "%100s", text);
    printf("%s\n", text);
    fclose(datei);
    

    //edit: Mit der Seite habe ich versucht, das zu lernen, trotzdem danke



  • So sollte das auslesen funktionieren...

    fgets(text, sizeof(text), datei);
    


  • moin, moin

    ich würde es über eine schleife und mit fscanf machen

    ungefähr so

    ....
    while(fscanf(filepointer, "%s", buffer) != EOF)
    {
        //Dateiinhalt verarbeiten
    }
    ...
    

    buffer ist in dem fall ein char array


Anmelden zum Antworten