Ich verwende Ubuntu 18.04 auf VMWare Fusion. Ich habe keine Ahnung, warum die Datei mit der Funktion fopen() in C nicht geöffnet wird. Der Code ist unten.
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(void) {
char *fname = "file.txt";
FILE *fp;
if((fp = fopen(fname, "w")) != NULL) {
fprintf(stderr, "open error for %s, errno = %d\n", fname, errno);
exit(1);
}
printf("opened!\n");
free(fp);
return 0;
}
Und das Ergebnis ist unten.
$ ./a.out
open error for file.txt, errno = 0
Mein Ubuntu-Speicher ist so.
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 393M 2.1M 391M 1% /run
/dev/sda1 19G 14G 3.9G 79% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs 393M 16K 393M 1% /run/user/122
tmpfs 393M 36K 393M 1% /run/user/1000
Antwort1
diese Aussage
if((fp = fopen(fname, "w")) != NULL) {
sollte sein:
if((fp = fopen(fname, "w")) == NULL) {
IE der gepostete Code prüft die Erfolgsbedingung und nennt sie einen Fehler
in einem verwandten Zusammenhang:
diese Aussage:
free(fp);
ist NICHT, wie man eine Datei schließt
verwenden Sie stattdessen:
fclose( fp );
Auch,
df
gibt Auskunft über die Festplattenspeichernutzung
Um Informationen zu Dateien anzuzeigen, verwenden Sie:
ls -al
man
Wir empfehlen Ihnen dringend, die Seiten für alle Funktionen, die Sie verwenden möchten, umfassend zu nutzen .