文件操作中输出不能正确显示
问题描述:
任何人都可以解释这段代码中的错误吗?文件操作中输出不能正确显示
#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中。但结果相同。
答
首先,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()函数是一个可变参数函数,因此编译器执行不会自动型转换。您需要使用可变参数函数手动投射。
请提供您的测试输入,这使得 “” 探测不到的字体。” – timrau 2013-02-25 14:08:24
应该是int C,不是char c^ – 2013-02-25 14:09:11
@timrau对于任何输入,像'计算器/' – noufal 2013-02-25 14:10:36