Daten aus txt einelesen und verarbeiten



  • Hallo,
    ich habe eine Textdatei, die so aufgebaut ist:

    1,messung1,4,23.21
    1,messung1,3,24.53
    2,messung2,1,26.65
    3,mussung3,5,23.23
    2,messung2,2,27.34

    Die einezelnen Werte stehen für: Objektnummer , Name , Messnummer , Messwert

    Der Nutzer soll nun eine Objektnummer eingeben und dazu sollen dann die Messwerte ausgewertet werden.

    Wie komme ich nun an die gebruachten Messwert? Bin leider noch ein blutiger Anfänger in C.

    Danke schon einmal vorweg.



  • - struct definieren
    - Array darauf definieren
    - mit fopen,fgets,sscanf,fclose Array befüllen
    - mit Suchkriterium das struct-Array durchlaufen



  • struct messobjekt {
        int objektnr;
        char bezeichnung[20];
    };
    
    typedef struct messobjekt Messobjekt;
    
    struct messwert {
        Messobjekt *objekt;
        int messnr;
        double messwert;
    };
    
    typedef struct messwert Messwert;
    

    In der Main wird dann anschließend Speicher allokiert und die Datei geöffnet:

    int size = 3;
    Messwert* messwert=(Messwert*)calloc(size, sizeof(Messwert));
    f=fopen("messungen.txt", "r");
        if(f==NULL){
            perror("Error");
            return 1;
        }
    

    Mein Problem liegt jetzt eher an dem Umgang mit fopen, sscanf usw.



  • es fehlt natürlich noch

    FILE* f;



  • In der Main wird dann anschließend Speicher allokiert und die Datei geöffnet:

    nefis schrieb:

    Mein Problem liegt jetzt eher an dem Umgang mit fopen, sscanf usw.

    Und in der Speicherverwaltung.

    nefis schrieb:

    int size = 3;
    Messwert* messwert=(Messwert*)calloc(size, sizeof(Messwert));
    f=fopen("messungen.txt", "r");
        if(f==NULL){
            perror("Error");
            return 1;
        }
    

    - Was machst du mit der geöffneten Datei, wenn calloc NULL liefert?
    - Wenn calloc != NULL liefert, was passiert mit dem reservierten Speicher, wenn fopen NULL zurückgibt?
    Nachdem du diese Überlegungen in Code gegossen hast, brauchst du noch ein Schleifchen, das du um fscanf machst und einen Formatstring für fscanf ... und hinterher wieder alles aufräumen nicht vergessen.


Anmelden zum Antworten