как создать текстовый файл по заданному пути, если файл не существует

void my_create(char* path)
{
    FILE* fp;
    fp = fopen(path, "rb+");
    if (fp == NULL) /* File doesn't exist*/ 
        fp = fopen(path, "wb");
}

Почему это не работает ? или я делаю что-то не так, выбрав неверный путь ?
Не уверен.

Спасибо заранее

2 ответа

  1. Имя файла может быть недопустимым или у вас проблемы с разрешениями.

    Попробовать это :

    #include <string.h>
    #include <errno.h>
    
    void my_create(char* path)
    {
        FILE* fp;
        fp = fopen(path, "rb+");
        if (fp == NULL) { /* File doesn't exist*/ 
            printf ("File does not exist : %s", path)
            fp = fopen(path, "wb+");
            if (fp == NULL) {
                fprintf (stderr, "Cannot create file : %s\n", path);
                fprintf (stderr, "Reason : %s" , strerror (errno));
            }
        }
    }
    
  2. Я не думаю, что проверка файла существует или нет с fopen является правильным способом.
    Вы можете использовать stat ().

    struct stat st = {0};
    if (stat(path, &st) == -1) 
    {
        FILE *fp = fopen(path, "w+");
        if (!fp) printf("Can not create file: %d\n", errno);
        else fclose(fp); 
    }