不能在同一个程序中使用 fopen 和 mkdir

Can't use fopen and mkdir in same program

提问人:Justin 提问时间:10/21/2023 更新时间:10/21/2023 访问量:59

问:

我正在努力创建具有有效语法可能性的文件,这些文件可以在以后编译。我首先使用 fopen 方法创建文件,然后添加 mkdir() 函数来处理文件创建。但是,我遇到了一个特殊的问题,即我无法在同一个程序中同时使用这两个功能。编译器似乎更喜欢只执行 fopen 函数。值得注意的是,这两个功能单独工作正常。你能帮我理解为什么会这样吗?

#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>

int main(){
    FILE *fprt;
    char *filename = "File";

    fprt = fopen(filename,"w");

    if (!fprt ) // equivalent to saying if ( in_file == NULL )
             { 
                printf("oops, file can't be read\n");
             }


    mkdir(filename,0777);
    printf("\n");
}
C 文件 语法 fopen mkdir

评论

2赞 Weather Vane 10/21/2023
在 Windows 上,您无法创建与现有文件同名的文件夹。
0赞 pmg 10/21/2023
在尝试创建同名目录之前,请先删除该文件:if (remove(filename)) { /* perror ... */ }
0赞 Weather Vane 10/21/2023
那么,你是说在 Mac 上您可以创建一个与已有文件同名的文件夹吗?
0赞 Justin 10/21/2023
@WeatherVane不,它不允许。在 Mac 上也是如此。
2赞 pmg 10/21/2023
当您检查返回值时,您应该执行相同的操作,例如fopen()mkdir()if (mkdir(filename, 0777)) { /* perror ... */ }

答:

3赞 Lajos Arpad 10/21/2023 #1

您可以在同一个程序中使用 和。fopenmkdir

不能在同一位置创建具有相同名称的文件夹和文件。

你把后者当作一个问题来对待,并误解了它,认为是前者。 创建一个文件夹,它代表mkdir

make 目录

您将无法使用它创建文件。因此,您可能想要的是创建一个目录,然后在其中创建一个文件。但是,您需要先创建目录,然后创建文件,并确保创建的文件的路径包含要创建它的目录。