文件操作中输出不能正确显示

文件操作中输出不能正确显示

问题描述:

任何人都可以解释这段代码中的错误吗?文件操作中输出不能正确显示

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

+0

请提供您的测试输入,这使得 “” 探测不到的字体。” – timrau 2013-02-25 14:08:24

+1

应该是int C,不是char c^ – 2013-02-25 14:09:11

+1

@timrau对于任何输入,像'计算器/' – noufal 2013-02-25 14:10:36

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

+0

好的。有效的(圆括号) – noufal 2013-02-25 14:16:53

+0

@noufal你还需要一个'int'用于'c',而不是'char'。 – 2013-02-25 14:21:34

+0

但char正在工作 – noufal 2013-02-25 14:23:44