wie man erkennt, dass eine Datei geöffnet ist oder nicht in c
Lesezeit: 2 Minuten
Ich versuche, mit dem C-Programm eine Zeichenfolge in einer TXT-Datei auszugeben
Allerdings muss ich sehen, ob ich die Berechtigung habe, in die txt-Datei zu schreiben, wenn nicht, muss ich die Fehlermeldung ausdrucken? Ich weiß jedoch nicht, wie ich feststellen kann, ob ich eine Datei erfolgreich öffne oder nicht. Kann mir jemand dabei helfen? Danke
Der Code ist so
File *file = fopen("text.txt", "a");
fprintf(file, "Successfully wrote to the file.");
//TO DO (Which I don't know how to do this)
//If dont have write permission to text.txt, i.e. open was failed
//print an error message and the numeric error number
Danke für jeden hilft, vielen Dank
Santosch
Sie müssen den Rückgabewert von fopen überprüfen. Aus der Manpage:
RETURN VALUE
Upon successful completion fopen(), fdopen() and freopen() return a FILE pointer.
Otherwise, NULL is returned and errno is set to indicate the error.
Um erneut zu überprüfen, ob das Schreiben erfolgreich war oder nicht, überprüfen Sie den Rückgabewert von fprintf oder fwrite. Um den Grund für den Fehler zu drucken, können Sie errno überprüfen oder perror verwenden, um den Fehler zu drucken.
f = fopen("text", "rw");
if (f == NULL) {
perror("Failed: ");
return 1;
}
perror gibt den Fehler wie folgt aus (falls keine Berechtigung vorliegt):
Failed: Permission denied
vielen Dank, deine Erklärung ist sehr klar und hilfreich
– Peng Ren
4. Februar 2013 um 4:23 Uhr
Schöne Antwort, aber zu Ihrer Information, in diesem Fall wird zweimal ein Semikolon gedruckt: Failed: : No such file or directory.
– Gsamaras
17. Oktober 2020 um 19:14 Uhr
Sie können eine Fehlerprüfung durchführen, um festzustellen, ob die Aufrufe von fopen und fprintf erfolgreich waren.
Der Rückgabewert von fopen ist der Zeiger auf das Dateiobjekt bei Erfolg und ein NULL-Zeiger bei Fehlschlag. Sie könnten auf den Rückgabewert NULL prüfen.