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 ?

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

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

Probiers mal so (habs nicht ausprobiert, nur ne Idee):

FILE * fp = fopen ("/a/b/c/log/file.log", „a“));

if (fp == NULL)
{

mfg dixxi

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

Hallo,

ist nur ein Tippfehler von mir. Die Originalfunktion ist syntaktisch korrekt und Compiler beschwert sich nicht.
Trotzdem Danke !

1 Like

Hallo,

ist nur ein Tippfehler. Die eigentliche Funktion ist syntaktisch korrekt und Compiler beschwert sich nicht.
Trotzdem Danke !

Hallo,

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

Trotzdem Danke !

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

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?

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

Hi.

Mal ein Schuss ins Blaue.
Du bist dir sicher das die Funktion aufgerufen wird?

Hast du vielleicht mal im Verzeichnis „/a/d/e/bin/a/b/c/log“ nach der Datei gesucht?

Grüßle

Hallo,

das Verzeichnis existiert, aber Danke für den Hinweis.

Gruß
yku

Hi,

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 !

Gruß
yku