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

Benutzeravatar von Santosh
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.

FILE *file = fopen("text.txt", "a");

if (file == NULL) {
     perror("Error opening file: ");
}

Ebenso gibt fprintf im Fehlerfall eine negative Zahl zurück. Du könntest ein if(fprintf() < 1) überprüfen.

f = fopen( path, mode );
if( f == NULL ) {
  perror( path );
}

1433180cookie-checkwie man erkennt, dass eine Datei geöffnet ist oder nicht in c

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy