C语言 fopen()返回null和errno为0



我尝试创建一个文件(src),从中读取字符并将其复制到另一个文件(dst),当我从命令行中获取的文件名时参数,但fopen()函数返回null。我在这里读到我应该使用errno。

#include <stdio.h>
#include <errno.h>
void copyFile(char *src, char *dst);
int main(int args, char **argv) {
    int option = args;
    if(option == 3){
       copyFile(argv[1], argv[2]);
    }
    return 0;
}
void copyFile(char *src, char *dst) {
    FILE *srcFile = fopen(src, "rb");
    FILE *dstFile = fopen(dst, "wb");
    if (srcFile || dstFile) {
        printf("Error %d n", errno);
        return;
    } else {
        char buff[2];
        while (fread(buff, 2, 1, srcFile) != 0) {
            fwrite(buff, 2, 1, dstFile);
        }
        fclose(srcFile);
        fclose(dstFile);
    }
}

您正在测试fopen故障错误。如果 srcFiledstFile不是null

,该行if (srcFile || dstFile) {将返回true。

您需要测试的是,如果它们中的任何一个是 null:

if(srcFile==NULL || dstFile==NULL)

就个人而言,我将其分为连续的if语句,以便您可以输出一个更详细的错误,内容涉及哪个文件未能打开,而不仅仅是"至少一个文件未能打开"。

相关内容

  • 没有找到相关文章

最新更新