当我读入文件然后输出到新文件时,输出会出现乱码,我正在试图找出原因。
我正在尝试运行以下代码
#include<stdio.h>
#include<stdlib.h>
int main(int argc ,char *argv[])
{
int c;
FILE *of;
FILE *f;
of=fopen(argv[2],"w");
f=fopen(argv[1],"r");
while(c=getc(f)!=EOF)
putc(c,of);
fclose(of);
fclose(f);
return 0;
}
但是当我按照以下方式运行时
$./a.out temp new
其中temp
是现有文件,其内容为:
在运行程序之前,this is a temp file
和new
不存在
但是现在当我抓住new
的内容时,为什么会这样呢?
答案 0 :(得分:12)
while(c=getc(f)!=EOF)
需要括号,
while( (c=getc(f)) != EOF)
!=
的优先级高于作业=
的优先级。
答案 1 :(得分:0)
while(c=getc(f)!=EOF)
putc(c,of);
让我们看看你的代码在while循环中的作用;在守卫中,你写了
c=getc(f) !=EOF
!=
的优先级高于=
,所以真正发生的是
c=(getc(f) !=EOF)
,这意味着您要在of
中写入1的序列,即getc(f) != EOF
,直到找到EOF。
如你所说,你打算写的可能是
(c = getch(f)) != EOF
答案 2 :(得分:-1)
我不确定我是否对,但你不认为c应该是 char 而不是 int ?