C에서 fopen() 함수를 사용하여 파일이 열리지 않습니다.

C에서 fopen() 함수를 사용하여 파일이 열리지 않습니다.

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사용하려는 기능에 대해 페이지를 광범위하게 활용하는 것이 좋습니다 .

관련 정보