mikrocontroller.net

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


Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
  if((fp = fopen( "C:\test.txt", "r")) == NULL);
    {
      // Fehlerroutine
      fprintf (stderr,"Dateikonnte nicht geöffnet werden");
      return 1;
    }

die Datei test.txt befindet sich auf c

vielen Dnka schon mal...

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karsten (Gast)
Datum:

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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne prima Idee wärs auch, die errno mal auszuwerten, findeste nich?

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christoph Mmmmmmm (Firma: privat) (mauralix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht hat dein Programm nicht die erforderlichen Rechte o.ä..

Autor: Karsten (Gast)
Datum:

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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht solltest Du den Strichpunkt nach dem if wegmachen...

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Markus
Der Strichpunkt war's...
Vielen Dank...

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
  perror("fopen");

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.