fopen und fclose
-
hi,
weiss jemand ob es eine einschraenkung bezueglich der anzahl der aufrufe fopen und fclose auf eine datei gibt in C?? (wie oft darf ich eine datei oeffnen und closen)??danke.
-
Du meinst die gleiche Datei öffnen und vor dem nächsten öffnen wieder schließen? DAS geht denke ich beliebig oft. Übel wird es halt, wenn du eine Datei zweimal öffnest und dann in den zweite Filestream schreibst.
-
also es ist so:
ich habe da eine funktion, die schreibt fehlermeldungen in eine global angelegte datei (ich weiss .. global igitt). Jedenfalls wird jedesmal die datei bei aufruf der funktion geoeffnet und geschlossen. Also ungefaehr so:... FILE *err_file_ptr = NULL; ... void error(char *msg){ if((err_file_ptr=fopen("error.txt", "a+"))==NULL) return; fputs(err_file_ptr, msg); fclose(); }
Bei der obigen version bekomme ich unvollstaendige ausgaben in der datei, das heisst nicht alles ist da, was da sein sollte.
Wenn ich die datei stattdessen einmal oeffne und ueber die ganze laufzeit hin geoeffnet lasse funzt alles wunderbar. Ich dachte es laege vielleicht an den vielen fopen und fclose aufrufen !?!?!?!?
Woran koennte es sonst liegen?
Vielen dank.
-
Mir ist generell unklar, wieso Du die Datei ständig auf und zu und auf und zu machst. Einmal aufmachen und zur Not mit Systemspezifika "locken". Abgesehen davon, wenn es sich wirklich um Fehler handelt ist stderr der Stream der Wahl. Und fclose könnte einen Parameter gebrauchen.
Falls Du mehrere Dateien gleichzeitig offenhältst könnte es FOPEN_MAX interessant werden, aber ich glaube da nicht so recht dran. Mach doch maal ein minimales Programm ohne Tippfehler.
-
Der Programm-Auszug von mir war syntaktisch nicht korrekt. Er hat jedoch denke ich schon meine Frage verdeutlicht (trotz des fehlenden Dateizeigers im Aufruf von fclose()).
Bei all denjenigen bei denen solch Programmauszuege Ausschlag und allergisches Jucken im Rektalbereich verursachen, bitte ich um Entschuldigung.
Gruss