0

我需要打开这个文件,但它没有打开,我不知道为什么:

#include<stdio.h>

void copy();

int main(void)
{
    copy();

    return 0;
}

void copy()
{
    FILE *src = fopen("srcc.txt", "r+");

    if(!src)
    {
        printf("It was not possible to open the file");
        return;
    }
}

它只是通过 if 条件并出现消息it was not possible to open the file并且未创建文件。

4

3 回答 3

1

您可以尝试使用errnostrerror()来获取特定的错误代码。对于大多数库实现上的fopen(),errno 变量也设置为失败时特定于系统的错误代码。

您可以尝试以下方法:

#include <errno.h>
...
...
FILE *src = fopen("srcc.txt", "r+");
if(!src)
{
    printf("ERROR: %d - %s\n", errno, strerror(errno)); // <---- This will print out some 
                                                        // useful debug info for you
    printf("It was not possible to open the file");
    return;
}

errno.h将有一个常见错误代码的定义列表,strerror()并将转换为errno您可以打印出来的字符串...

在这种情况下,您可能会看到的可能代码包括以下一些代码(只是从 errno.h 逐字复制 - 我省略了实际值......):

#define EPERM  /* Operation not permitted */
#define ENOENT /* No such file or directory */
...
#define EACCES /* Permission denied */
...
于 2013-06-27T11:17:16.613 回答
0

如果文件存在,它可能是只读的……你不能在不可写的文件上使用“r+”。你真的需要“r+”而不仅仅是“r”吗?

于 2013-06-27T11:18:40.720 回答
0

有可能找不到文件。我建议制作文件的各种副本并将它们放在不同的文件夹中。

于 2013-06-27T11:20:05.933 回答