函数“ fgetc()”在一段时间内无法正常工作

时间:2019-01-27 13:30:25

标签: c file codeblocks

我写了一个小程序,应该逐个字符地读取文件的内容,但是代码的作用是每次字符跳一次,好像每次字符都逃脱了角色,我不明白为什么< / p>

我不知道该怎么办

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i, age = 18;
    char strind[] = "Himou";
    FILE *file = NULL;

    file = fopen("test.txt", "r+");
        if(file != NULL)
        {
            do
            {
                printf("%c", fgetc(file));
            }while(fgetc(file) != EOF);

            fclose(file);
        }
        else
        {
            printf("the file couldn't be open");
        }

   return 0;
}

该文件存在并且包含“ Hello World !!您的名字是Himou,您的年龄是18岁”,因此我所期望的却是实际结果“ HloWrd!Yu aei io n oraei 8”

1 个答案:

答案 0 :(得分:1)

  

每次角色跳一次,就好像每次逃脱角色

       do
       {
           printf("%c", fgetc(file)); <<< here you read and print a character
       }while(fgetc(file) != EOF);    << here you read again a character and lost it

是的,因为您需要这样做,请参阅我在上面的代码中添加的注释

  

我不知道该怎么办

可能您想要这样写所有读取的字符:

int c;
while ((c = fgetc(file)) != EOF)
  putchar(c);