如果文件不存在,如何在给定路径中创建文本文件

时间:2016-05-06 13:53:48

标签: c file-io

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

为什么它不起作用?或者我错误的路径做错了什么? 不太确定。

提前致谢

2 个答案:

答案 0 :(得分:0)

文件名可能不可接受,或者您遇到权限问题。

试试这个:

#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));
        }
    }
}

答案 1 :(得分:0)

我不认为检查文件是否存在与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); 
}