c-文件操作中的输出不正确



有人能解释一下这段代码中的错误吗。

#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);
}

输出的字体无法检测。我也试过窗户。但结果是一样的。

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

相关内容

  • 没有找到相关文章

最新更新