C- Programmieren: textdatei in array einlesen

Von: , Frage gestellt am Mi, 29. Jul 2009

Hallo,
ich lerne gerade C - Programmieren (ich weiss das das fuer mich als Anfaenger unguenstig ist, aber ich brauche das fuer die Arbeit).
Im Moment probiere ich ein Datei, genauer gesagt eine Spalte mit Zahlen einzulesen um dann damit weiterzuarbeiten.
Als (vereinfachtest) Beispiel moechte ich Kilometer einlesen und das alles in Fuss umrechnen.

Also dachte ich ich nehme die Datei, lese sie in ein Array ein und rechne dann mit den Array weiter.

Allerdings weiss ich nicht, wie man eine Datein in ein array einliest (nur wie man einen einzelnen Wert in ein array schreibt) . Bis jetzt kann ich die Datei immer nur einlesen und auf dem Bildschirm wieder ausgeben.

Kann mir vielleicht jemand helfen?

So weit bin ich schon:


#include <stdio.h>

int main() {
float c;
FILE *file; //Pointer

file = fopen("rot.txt", "r");


if(file==NULL) {
printf("Error: can't open file.\n");
return 1;
}
else {
printf("File opened successfully. Contents:\n\n");

while(1) { /* keep looping... */
c = fgetc(file);
if(c!=EOF) {
printf("%c", c); // auf Bildschirm schreiben
rot[1] = c;
}
else {
break; // abbrechen wenn Ende des Files
}
}
printf("\n \n \t rot[1] %lf ", rot[1]);
printf("\n\nNow closing file...\n");
fclose(file);
return 0;
}


}

4 Antworten zu dieser Frage

  1. Antwort von nach 3 Minuten 0 hilfreich
    Re: C- Programmieren: textdatei in array einlesen

    Hallo, ich lerne gerade C - Programmieren (ich weiss das das fuer
    mich als Anfaenger unguenstig ist, aber ich brauche das fuer
    die Arbeit).
    Im Moment probiere ich ein Datei, genauer gesagt eine Spalte
    mit Zahlen einzulesen um dann damit weiterzuarbeiten.
    Als (vereinfachtest) Beispiel moechte ich Kilometer einlesen
    und das alles in Fuss umrechnen.
    Wie sieht so eine Datei aus? Konkretes Beispiel mit 10 Zeilen?

    Grüße

    CMБ

    • Antwort von nach 9 Minuten 0 hilfreich
      Re^2: C- Programmieren: textdatei in array einlese

      also im Moment sieht meine Datei noch so aus:

      0
      1.0
      2.0
      3.0
      4.0
      5.0
      6.0
      7.0
      8.0
      9.0


      nicht besonders kreativ. Aber man muss ja klein anfangen...

      • Antwort von nach 34 Minuten 0 hilfreich
        Re^3: C- Programmieren: textdatei in array einlese

        Hallo also im Moment sieht meine Datei noch so aus:
        1.0
        2.0
        3.0
        4.0
        5.0
        6.0
        7.0
        8.0
        9.0
        Aha. Die "kanonische" Variante, in C Daten
        einzulesen, wäre imho mit der fgets/sscanf-
        Kombination. Beispiel:

        #include <stdio.h>
        int main() 
        {
        char fname[] = "rot.txt";
        char zeile[128]; /* Zeilenbreite max. */
        float rot[512];  /* max. Anzahl werte */
        int i, nRot = 0; /* noch 0 Werte      */
        FILE *fp = fopen(fname,"rt");
        /* Teil 1: Einlesen */
        printf("Lese %s\n", fname);
        if(fp == NULL) {
        perror(fname);
        return 1;
        }
        while(fgets(zeile, sizeof(zeile), fp)) { 
        float val;
        if(sscanf(zeile, "%f", &val) > 0) {
        rot[nRot] = val;
        nRot++;
        }
        }
        fclose(fp);
        /* Teil 2: Auswerten */
        printf("%d Werte gefunden\n", nRot);
        for(i=0; i<nRot; i++) printf("%f\n", rot[i]);
        return 0;
        }
        


        Grüße

        CMБ

        • Antwort von nach einem Tag 0 hilfreich
          Re^4: C- Programmieren: textdatei in array einlese

          Danke,
          das funktioniert.
          Aber ich habe nochmal eine Frage:
          was macht denn das >0 bei [if(sscanf(zeile, "%f", &val) > 0)] ?
          Heisst das das nur positive Werte eingelesen werden?

          beste Gruesse

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!