VMWare Fusion에서 Ubuntu 18.04를 사용하고 있습니다. C에서 fopen() 함수를 사용하여 파일이 열리지 않는 이유를 모르겠습니다. 코드는 다음과 같습니다.
#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;
}
결과는 아래와 같습니다.
$ ./a.out
open error for file.txt, errno = 0
내 우분투 메모리가 그렇습니다.
$ 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
답변1
이 진술
if((fp = fopen(fname, "w")) != NULL) {
해야한다:
if((fp = fopen(fname, "w")) == NULL) {
IE 게시된 코드는 성공 조건을 확인하고 이를 오류라고 부릅니다.
관련 메모에서 :
이 진술:
free(fp);
파일을 닫는 방법이 아닙니다
오히려 다음을 사용하십시오.
fclose( fp );
또한,
df
디스크 공간 사용량을 알려줍니다.
파일 사용에 대한 정보를 표시하려면 다음을 수행하십시오.
ls -al
man
사용하려는 기능에 대해 페이지를 광범위하게 활용하는 것이 좋습니다 .