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.
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
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.
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).
Du hast fast genau getroffen. Heute habe ich entdeckt, dass das erstellte Binary nicht mal aufgerufen wurde. Warum, ist die andere Sache. Jedenfalls ist das Problem in diesem Sinne gelöst.
Danke !