我尝试创建一个文件(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
故障错误。如果 srcFile
或 dstFile
是不是null 。
if (srcFile || dstFile) {
将返回true。您需要测试的是,如果它们中的任何一个是 null:
if(srcFile==NULL || dstFile==NULL)
就个人而言,我将其分为连续的if
语句,以便您可以输出一个更详细的错误,内容涉及哪个文件未能打开,而不仅仅是"至少一个文件未能打开"。