【问题标题】:Printing char of a file with fgetc() ending with a "?" symbol使用 fgetc() 以“?”结尾的文件打印字符象征
【发布时间】:2019-04-08 08:31:07
【问题描述】:

我正在尝试使用 while 循环逐个打印文件中的字符(使用 fgetc)。

我正在使用最新的 Atom 编辑器编写代码,并使用 GPP Compiler 进行编译,按 F5 并在 xterm 终端中显示输出。

int main(int argc, char const *argv[])
{
  FILE* file = NULL;
  file = fopen("text.txt", "r+");
  int letter = 0;

  if (file != NULL)
  {
    while(letter != EOF)
    {
      letter = fgetc(file);
      printf("%c", letter);
    }

我希望输出是我文件中的文本,但最后有一个问号符号。 经过一番研究,我了解到我的 fgetc 函数像普通字符一样读取 EOF 并打印它,最后产生一个问号符号。 感谢您的帮助!

【问题讨论】:

    标签: c


    【解决方案1】:

    ... 以“?”结尾符号

    在做

    while(letter != EOF)
    {
      letter = fgetc(file);
      printf("%c", letter);
    }
    

    你打印 letter 之前检查它是否是 EOF,所以你(尝试)打印不是字符的 EOF,产生意外的输出

    有效代码示例:

    while ((letter = fgetc(file)) != EOF)
      putchar(letter); /* or printf("%c", letter); if you prefer */
    

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,我发现 fgetc 的返回类型是一个整数,它可能返回 -1。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-07
        • 2011-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-20
        相关资源
        最近更新 更多