为什么我的文件输出乱码?

时间:2012-07-07 19:07:23

标签: c file-io

当我读入文件然后输出到新文件时,输出会出现乱码,我正在试图找出原因。

我正在尝试运行以下代码

#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 filenew不存在

但是现在当我抓住new的内容时,为什么会这样呢?

3 个答案:

答案 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