fopen("test.dat", "w") liefert NULL zurück??



  • Also Rechte gibt es unter Dos doch gar nicht. Ein vorheriges fcloseall() lieferte den Wert 0, was bedeutet, es ist keine auf gewesen, die zu schließen war. Außerdem kümmert sich DOS nicht um ein Rechte beim Öffnen mit w oder w+.

    Speicherplatz ist auch genügend da

    Ranger



  • Also unter DOS (wäre geschickt das im OP zu erwähnen) gibt es ja das Attribut "Schreibgeschützt" (hab ich hier fälschlicherweise als "Recht" bezeichnet, sorry).

    Hat dein DOS-Compiler keine Funktion ähnlich GetLastError() um den Fehler abzufragen?



  • GetLastError ist eine Win32-Funktion und hat überhaupt nichts mit der CRT Funktion fopen zu tun (auch nicht unter Windows).

    Im günstigesten Fall wird noch "errno" gesetzt... (wobei dies in der Doku nicht erwähnt wird...)



  • Jochen Kalmbach schrieb:

    GetLastError ist eine Win32-Funktion und hat überhaupt nichts mit der CRT Funktion fopen zu tun (auch nicht unter Windows).

    Mit GetLastError() kan man wunderbar auslesen was von fopen() gesetzt wurde. Natürlich nur unter win32. Ich versteh dein Problem nicht.



  • Wenn es geht, dann ist es Zufall. Du kannst nicht davon ausgehen, dass "CreateFile" die letzte Win32-Funtion war die von "fopen" aufgerufen wurde... das ist nur eine Annahme von Dir, die sich jederzeit ändern kann (also zumindest mit anderen CRT Versionen).



  • TactX schrieb:

    Jochen Kalmbach schrieb:

    GetLastError ist eine Win32-Funktion und hat überhaupt nichts mit der CRT Funktion fopen zu tun (auch nicht unter Windows).

    Mit GetLastError() kan man wunderbar auslesen was von fopen() gesetzt wurde. Natürlich nur unter win32. Ich versteh dein Problem nicht.

    Außerdem gehts hier um DOS.

    MfG SideWinder



  • @ Jochen Kalmbach: O.K., jetzt versteh ich.

    @ SideWinder: Ja, ich weiss. Ich bin aber nicht Schuld wenn der OP das nicht oder zu spät mitteilt.



  • Sorry, wenn ich das vergessen habe zu erwähnen. Tut mir leid. Kommt nicht mehr vor.

    Ranger



  • Ich nochmal!

    Also der errno sagt 4 -> too many open Files

    Das kann nun überhaupt nicht sein, weil ein fcloseall() mir 0 zurückliefert, also sind keine Dateien offen.

    Ranger



  • fcloseall liefert doch afaik immer 0? Schließ deine früheren Dateien besser mit fclose(f) statt fcloseall().

    MfG SideWinder


Anmelden zum Antworten