我正在尝试将一个测试文件复制到C语言中的另一个测试文件中。但是我的代码无法正常运行,程序运行正常并生成文件CircleCode_temp,但文本文件中没有任何内容。任何想法为什么不起作用
#include <stdio.h>
#include <stdlib.h>
char c;
int main(int argc, char **argv)
{
FILE *orginalFile = fopen("CircleCode1", "r");
FILE *newFile = fopen("CircleCode_temp", "w");
if (orginalFile == NULL | newFile == NULL)
{
printf("Cannot open file");
exit(0);
}
while((c = fgetc(orginalFile))!=EOF)
{
fputc(c,newFile);
c = fgetc(orginalFile);
}
fclose(orginalFile);
fclose(newFile);
return 0;
}
答案 0 :(得分:2)
while((c = fgetc(orginalFile))!=EOF)
{
fputc(c,newFile);
c = fgetc(orginalFile);
}
这里有两个错误:
您在循环中两次调用fgetc
,这会使其他所有字符都消失。
您将c
与EOF
进行比较。您假设将fgetc
的返回值与EOF
进行比较。如果您认为它们相同,请记住c
的类型为char
,而fgetc
返回的是int
。
也:
if (orginalFile == NULL | newFile == NULL)
这里有一个错误。您有|
是按位或,但您想使用||
是逻辑或。