PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : erzeugte Datei ist leer



Alex_Mering
21.07.2008, 08:10
Hallo liebe Forengemeinde, ich habe folgenden Kode:


#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:


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.

fhs
21.07.2008, 08:31
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

Alex_Mering
21.07.2008, 08:37
@ fhs

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

fhs
21.07.2008, 08:39
@ 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

fhs
21.07.2008, 08:48
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:


#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

sternst
21.07.2008, 08:57
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");

fhs
21.07.2008, 09:04
@ Stefan
Danke, gute Idee!

@ Alex
Welches OS benutzt Du?

MfG

Fred

Alex_Mering
21.07.2008, 11:14
@ 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 ](*,) #-o