fopen() öffnet keine Datei

Von: (abgemeldet) , Frage gestellt am Sa, 4. Apr 2009
Hallo,

kann mir jemand vielleicht sagen, warum folgende C-Funktion die angegebene Logdatei nicht öffnet und auch nichts in STDERR ausgibt ?

void Trace ()
{
FILE * fp;

if ((fp = fopen ("/a/b/c/log/file.log", "a")) == NULL)
{
fprintf (stderr, "ERR: Unable to open file \"file.log\");
exit (1);
}

fprintf (fp, "File: %s Line: %d", __FILE__, __LINE__);

if (fclose (fp) != 0)
fprintf (stderr, "ERR: Could not close file \"file.log\");

return;
}

Diese Funktion habe ich in einer .pc-Datei meines Projekts definiert
und aus mehreren Stellen in dieser und anderen Dateien aufgerufen.

Die Projekt Soursen wurden in meiner Work Area kompiliert und das erzeugte Binary von meinem BIN-Verzeichnis ("/a/d/e/bin")fuer Testzwecken in ein anderes BIN-Verzeichnis ("/a/b/c/bin") kopiert.

Die Logdatei "/a/b/c/log/file.log" musste in der Laufzeit erzeugt werden, was aber nicht passiert. Auch gibt es keine Ausgabe in STDERR. Wenn ich diese Logdatei zuerst anlege und danach das Programm starte, wird in diese Datei einfach nichts geschrieben.

MFG
yku

12 Antworten zu dieser Frage

  1. Antwort von nach einer Stunde 0 hilfreich
    Re: fopen() öffnet keine Datei
    Hallo, kann mir jemand vielleicht sagen, warum folgende C-Funktion
    die angegebene Logdatei nicht öffnet und auch nichts in STDERR
    ausgibt ?
    Weil das noch nicht mal ein syntaktisch gültiges C-Programm ist. Vermutlich beschwert sich sogar dein Compiler darüber.

    Grüße,
    Moritz
    • Antwort von (abgemeldet) nach 19 Stunden 0 hilfreich
      Re^2: fopen() öffnet keine Datei
      Hallo,

      ist nur ein Tippfehler. Die eigentliche Funktion ist syntaktisch korrekt und Compiler beschwert sich nicht.
      Trotzdem Danke !
      • Antwort von nach 22 Stunden 0 hilfreich
        Re^3: fopen() öffnet keine Datei
        Hallo, ist nur ein Tippfehler. Die eigentliche Funktion ist
        syntaktisch korrekt und Compiler beschwert sich nicht.
        Beim programmieren kann ein einzelner Buchstaben zwischen funktionieren und nicht-funktionieren entscheiden. Daher ist es immer sinnvoll, die Beispiele per Copy- und Paste eins-zu-eins zu übernehmen, sonst unterhalten sich Fragender und Antwortender über verschiedene Programme, die aus verschiedenen Gründen nicht funktionieren - im allgemeinen ist das nicht produktiv.

        Grüße,
        Moritz
  2. Antwort von (abgemeldet) nach 6 Stunden 0 hilfreich
    Re: fopen() öffnet keine Datei
    Probiers mal so (habs nicht ausprobiert, nur ne Idee): FILE * fp = fopen ("/a/b/c/log/file.log", "a"));

    if (fp == NULL)
    {
    mfg dixxi
    • Antwort von (abgemeldet) nach 19 Stunden 0 hilfreich
      Re^2: fopen() öffnet keine Datei
      Hallo,

      das muss sicher gehen. Ist eine andere Schreibweise.
      Ich fürchte, mein Problem liegt nicht darin.

      Trotzdem Danke !
  3. Antwort von nach 13 Stunden 0 hilfreich
    Re: fopen() öffnet keine Datei
    Hallo fprintf (stderr, "ERR: Unable to open file \"file.log\");
    Hier fehlt ein " am Ende des Strings. Richtig ist:
    fprintf (stderr, "ERR: Unable to open file \"file.log\""); fprintf (stderr, "ERR: Could not close file \"file.log\");
    Hier ebenfalls:
    fprintf (stderr, "ERR: Could not close file \"file.log\"");
    Bei mir unter Windows mit Compiler lcc funktioniert die Funktion.
    Liebe Grüße.
    Alex
    • Antwort von (abgemeldet) nach 19 Stunden 1 hilfreich
      Re^2: fopen() öffnet keine Datei
      Hallo,

      ist nur ein Tippfehler von mir. Die Originalfunktion ist syntaktisch korrekt und Compiler beschwert sich nicht.
      Trotzdem Danke !
      • Antwort von nach einem Tag 0 hilfreich
        Re^3: fopen() öffnet keine Datei
        ist nur ein Tippfehler von mir. Die Originalfunktion ist
        syntaktisch korrekt und Compiler beschwert sich nicht.
        Wie wärs wenn du dann mal die Originalfunktion hier endlich mal posten würdest, damit wir uns hier überhaupt über die gleiche Funktion unterhalten?
  4. Antwort von (abgemeldet) nach einem Tag 0 hilfreich
    Re: fopen() öffnet keine Datei
    Hi, kann mir jemand vielleicht sagen, warum folgende C-Funktion
    die angegebene Logdatei nicht öffnet und auch nichts in STDERR
    ausgibt ?

    void Trace ()
    {
    ...
    }
    Das könnte passieren, wenn der Filehandle für stderr geschlossen ist und auch das "Log"file nicht geöffnet werden kann (weil z.B. das Verzeichnis log nicht unter /a/b/c existiert).

    Gruss
    norsemanna


Keine passende Antwort gefunden? Jetzt eigene Frage stellen!