-
        

Ergebnis 1 bis 8 von 8

Thema: erzeugte Datei ist leer

  1. #1

    erzeugte Datei ist leer

    Anzeige

    Hallo liebe Forengemeinde, ich habe folgenden Kode:

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        FILE *datei = fopen("Kat_A2_5.csv", "r");
        FILE *datei_neu = fopen("Kat_A2_5_MAS_ueberarbeitet.csv", "w+");
        
        if (datei != NULL)
        {
            char line [128];
            while (fgets(line, sizeof line, datei)) 
            {
                line[strlen(line)-1] = '\0';
                if(strcmp("text1", line) == 0) continue;
                else if(strcmp("text2", line) == 0) continue;
                else if(strcmp("text3", line) == 0) continue;
                else
                {
                    fputs(line, datei_neu);
                    fputs(";", datei_neu);
                    fputs("2008;", datei_neu);
                    fputs("false;", datei_neu);
                    fputs("true;", datei_neu);
                    fputs("false;", datei_neu);
                    fputs("\n", datei_neu);
                }
            }
            fclose(datei);
            fclose(datei_neu);
        }
        else
        {
            // Fehlerbehandlung
        }
    
        return 0;
    }
    Ich benutze als Entwicklungsumgebung Bloodshed Dev-C++. Der Code lässt sich ohne Probleme compilieren. Problem: Nach Ausführen wird mir eine leere Datei angezeigt, da das Programm in folgenden else-Zweig reinläuft:

    Code:
    else
        {
            // Fehlerbehandlung
        }
    Woran könnte das liegen? Die Datei, aus der ich auslese liegt im selben Verzeichnis, heisst wirklich so und in der Datei sind Daten drinn - sicher. Ich verzweifel so langsam. Bin Anfänger, was die C-Programmierung angeht.

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hallo Alex,

    wenn die Datei FILE "Kat_A2_5.csv" wirklich existiert, musst Du noch den Pfad angeben, also etwa <pre>FILE *datei = fopen("c:\\unterverz\\unterunterverz\\Kat_A2_5.csv ", "r"); </pre> ... dann wirst Du beim Öffnen keinen Fehler bekommen (vorausgesetzt, Dein Programm hat Leserechte). Den Rest Deines Codes habe ich mir nicht angesehen, da ja klar war, dass das Probelm an "datei==NULL" liegt.

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  3. #3
    @ fhs

    Nein, leider hat diese Angabe des Pfades keine Lösung gebracht. Die erzeugte Datei ist immer noch leer.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Zitat Zitat von Alex_Mering
    @ fhs

    Nein, leider hat diese Angabe des Pfades keine Lösung gebracht. Die erzeugte Datei ist immer noch leer.
    OK, geht das Programm in die Fehlerbehandlung?

    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hallo Alex,

    auch Debugging muss man lernen. Um festzustellen, wo es beim Öffnen hakelt, schreibe Dir doch erst einmal ein "Rumpfprogramm", das nur die Datei öffnet, z.B. etwa so:
    Code:
    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main(void) 
    { 
        FILE *datei = fopen("Kat_A2_5.csv", "r"); 
         
        if (datei != NULL) { 
              printf("konnte geöffnet werden\n");
              fclose (datei);
        }
        else printf("konnte nicht geöffnet werden\n"); 
    
        return 0; 
    }
    Gruß

    Fred
    Only entropy comes easy. - Anton Checkhov

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Außerdem würde ich mal errno auswerten, um zu sehen, woran es hapert.
    Also statt
    printf("konnte nicht geöffnet werden\n");
    besser
    perror("konnte nicht geöffnet werden");
    MfG
    Stefan

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    @ Stefan
    Danke, gute Idee!

    @ Alex
    Welches OS benutzt Du?

    MfG

    Fred
    Only entropy comes easy. - Anton Checkhov

  8. #8
    @ All

    danke für die zahlreichen Antworten. Bin in der Zwischenzeit auf den Fehler gekommen. Ich hatte eine Excel-Datei, die ich in csv-Format abgespeichert habe. Dabei hat Excel folgendes gemacht: Dateiname.xls.csv.

    Und damit ist klar, dass er diese Datei so nicht finden kann, wenn ich sage, öffne die Datei namens Dateiname.csv. Logisch

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •