Ersten 10 Wörter aus Datei einlesen und ausgeben.



  • Hallo ich möchte aus einer vorgefertigten Datei die ersten 10 Wörter in ein Array einlesen.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main ()
    {
    
     int einlesen[10];
      int i;
    
      while (i<10)
    
      {
    
     FILE *f=fopen("hallo.txt","r");
        fscanf("hallo.txt", "%s", einlesen[1]);
        printf("\n%s",einlesen[1]);
        i++;
          fclose(f);
      }
    
    }
    

    Ich weiß das mein code bis jetzt Müll ist aber mit irgend was muss ich ja anfangen.

    Zuerst einmal zu dem Problemm das ich nicht genau weiß wie man mit fscanf etwas aus einer datei einliest.

    ist das syntaxmäßig schonmal richhtig?Also bezogen auf fscanf.

    Außerdem kann ich ja nicht vorher wissen wieviel zeichen die 10 Wörter sind...

    Auf Galileo Computing war ich schon werde aber nicht so ganz schlau...

    FILE *f = fopen("Bankdaten.txt","a");
       fprintf (f, "\n%s\n%d\n%d\n" ,KtoInhaber, *KtoNr, *BLZ);
       fclose(f);
    

    Reinschreiben in eine Datei geht schon. Wobei ich hier die Datei auch erst erstellt habe...Wie kann ich Sie nun öffnen und die wörter die ich habe in en Array schreiben...also umgekehrt sozusagen 😞

    Danke für die Hilfe



  • fprintf und fscanf erwarten als ersten Parameter den Filedeskriptor und nicht den Dateinamen.

    Dann willst du ja Zeichen einlesen. Zeichen werden in char abgelegt.
    Da du nicht weist wie lang ein Wort ist, musst du erstmal genug Platz zu Verfügung stellen.

    fopen und fclose gehören ausserhalb der Schleife, sonst liest du immer vom Anfang der Datei.

    char einlesen[10][1000]; // 10 Strings zu 1000 Zeichen
    ....
      fscanf(f, "%[999]s", einlesen[i]);
    

    Reicht das erstmal zum probieren?



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main ()
    {
    
     char einlesen[10][100];
      int i;
        FILE *f=fopen("hallo.txt","r");
      while (i<10)
    
      {
    
        fscanf(f, "%[99]s", einlesen[i]);
        printf("\n%s",einlesen[i]);
        i++;
    
      }
       fclose(f);
    }
    

    Ok ich habe das jetzt so gemacht...und er liest auch was ein und giebt es wieder aus....aber das ist irgendenwie nur cryptischer mist den ich da rauskriege....



  • Schalt bei deinem Compiler in den Projekt/Compileroptionen mal alle Warnungen an.
    Dann bekommst du auch eine Warnung in etwa "Benutzung der Variablen i ohne vorherige Wertzuweisung" in Zeile 10.

    Lokale Variablen werden in C nicht automatisch initialisiert. D.h. sie haben nach der Erstellung irgendeinen Wert.

    Du musst auch überprüfen ob die Datei erfolgreich geöffnet werden konnte.
    Schau mal da: http://www.cplusplus.com/reference/clibrary/cstdio/fopen/


Anmelden zum Antworten