Forum: PC-Programmierung fopen weigert sich Datei zu öffnen


von Karsten (Gast)


Lesenswert?

Hallo zusammen,
ich hoffe ihr habt mal wieder nen guten Tip für mich...

Ich würde eine Datei gernen mit fopen öffnen, bekomme aber immer "NULL" 
als Rückgabewert, kann mir jemand einen Tip geben.-
Hier ist ein Teil vom Quellcode.
1
  if((fp = fopen( "C:\test.txt", "r")) == NULL);
2
    {
3
      // Fehlerroutine
4
      fprintf (stderr,"Dateikonnte nicht geöffnet werden");
5
      return 1;
6
    }

die Datei test.txt befindet sich auf c

vielen Dnka schon mal...

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Der Backslash hat in C eine Sonderbedeutung. Mit "\t" beschreibst du ein 
Tabulatorzeichen. Um auch wirklich ein '\' im Speicher zu erhalten musst 
du "\\" schreiben.

von Karsten (Gast)


Lesenswert?

hab es jetzt so, aber es geht trotzdem nicht :-(
1
if((fp = fopen( "C:\\test.txt", "r")) == NULL);

von Sven P. (Gast)


Lesenswert?

Ne prima Idee wärs auch, die errno mal auszuwerten, findeste nich?

von Karsten (Gast)


Lesenswert?

@  Sven Pauli
nein finde ich nicht,
weil ich ja in dem Sinne keine Fehlermeldung bekomme,
das Prog läuft, aber fopen liefert NULL zurück...
oder habe ich dich jetzt falsch verstanden?

von Christoph M. (Firma: privat) (mauralix)


Lesenswert?

Vielleicht hat dein Programm nicht die erforderlichen Rechte o.ä..

von Karsten (Gast)


Lesenswert?

@  Christoph Maurer
wie meinst du das?
wie kann man das herausfinde...
ich hab aber in Windows Administrationsrechte..

von Markus (Gast)


Lesenswert?

Vielleicht solltest Du den Strichpunkt nach dem if wegmachen...

von Sven P. (Gast)


Lesenswert?

Karsten wrote:
> @  Sven Pauli
> nein finde ich nicht,
> weil ich ja in dem Sinne keine Fehlermeldung bekomme,
> das Prog läuft, aber fopen liefert NULL zurück...
> oder habe ich dich jetzt falsch verstanden?

Doch. NULL heißt, die Datei konnte nicht geöffnet werden. In errno 
steht dann aber evtl. auch noch drinne, WARUM sie nicht geöffnet 
werden konnte (Zugriffsrechte, Laufwerk, Netzwerk...)

Edit sagt, für open und implizit damit für fopen gibbet z.B. 
folgende *errno*-Werte:

EACCES EFAULT EISDIR ELOOP EMFILE ENAMETOOLONG ENFILE ENODEV ENXIO 
OVERFLOW EPERM EROFS ETXTBSY EWOULDBLOCK

von Karsten (Gast)


Lesenswert?

@  Markus
Der Strichpunkt war's...
Vielen Dank...

von yalu (Gast)


Lesenswert?

> @  Sven Pauli
> nein finde ich nicht,
> weil ich ja in dem Sinne keine Fehlermeldung bekomme,
> das Prog läuft, aber fopen liefert NULL zurück...
> oder habe ich dich jetzt falsch verstanden?

Ja. Der Null-Pointer zeigt nur an, dass etwas schief gelaufen ist.
Der eigentliche Fehlercode steht in errno. Du kannst dir diesen
Fehlercode mit
1
  perror("fopen");

auch im Klartext umwandeln lassen. Dabei werden bspw. folgende
Meldungen ausgegeben:
1
fopen: No such file or directory
2
fopen: Permission denied

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.