Файл не открывается с помощью функции fopen () в C [закрыто]

Я использую Ubuntu 18.04 на VMWare Fusion. Я понятия не имею, почему файл не открывается с помощью функции fopen () в C. Код ниже.

#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

Моя память Ubuntu такая же.

$ 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
0
задан 11 June 2018 в 06:46

1 ответ

это утверждение

if((fp = fopen(fname, "w")) != NULL) { 

должно быть:

if((fp = fopen(fname, "w")) == NULL) {

И.Е. опубликованный код проверяет условие успеха и называет его ошибкой

в соответствующей заметке:

это утверждение:

free(fp);

НЕ является способом закрытия файла

лучше использовать:

fclose( fp );

также,

df 

сообщает об использовании дискового пространства

Для отображения информации о файлах используйте:

ls -al

Настоятельно рекомендуем широко использовать страницы man для любых функций, которые вы хотите использовать.

5
ответ дан 29 October 2019 в 03:35

Другие вопросы по тегам:

Похожие вопросы: