文件操作中输出未正确显示

时间:2013-02-25 14:05:34

标签: c file

任何人都可以解释这段代码中的错误。

#include<stdio.h>
int main() {
  FILE *f1;
  char c;
  f1 = fopen("INPUT", "w");
  while((c=getchar()) != '/')
    putc(c, f1);
  fclose(f1);
  f1 = fopen ("INPUT", "r");
  while ((c = getc(f1) != EOF))
    printf("%c", c); 
  fclose(f1);
}

输出以无法检测的字体出现。我也试过Windows。但结果相同。

1 个答案:

答案 0 :(得分:2)

首先,c应该是int,而不是char。 putc()接受int,更重要的是,getc()从流中读取下一个字符,并将其作为unsigned char强制转换为int,或者在文件末尾返回EOF或错误。如果您将其存储在char中,EOF会丢失,因为char太窄而且无法表示。 getc()

其次,这是错误的:

while ((c = getc(f1) != EOF))

你想要的是:

while ((c = getc(f1)) != EOF)

你错了一个括号。

请记住,您需要更改printf()调用,因为c现在是int

printf("%c", (char)c);

您需要显式强制转换,因为printf()是一个可变参数函数,因此编译器不执行自动类型转换。您需要使用可变参数函数进行手动转换。