gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:20:51 26 4
gpt4 key购买 nike

任何人都可以解释一下这段代码中的错误是什么。

#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 太窄并且无法表示它。

第二,这是错误的:

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

你想要的是:

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

你放错了括号。

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

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

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

关于c - 文件操作中输出未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15068811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com