输出在文件操作中没有正确显示

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

#include 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。 但结果相同。

首先, 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()是一个可变参数函数,因此编译器不执行自动类型转换。 您需要使用可变参数函数进行手动转换。