0

我是 C 语言的新手,现在遇到这样的问题:如果我使用上面的表达式在文件中打印字符串,为什么会得到一个奇怪的结果?

情况如下:我有一个文件(data.txt),内容如下:

“大家好!!”

这是我的代码:

int main()
{
   FILE *ptr = fopen("data.txt", "r");

   if (ptr != NULL)
   {
      while (getc(ptr) != EOF)    //print all contents in data.txt
         printf("%c", getc(ptr));
   }
   else
      printf("Open file failed.");

   return 0;
}

执行结果为:

“艾尔沃!”

如果我getc(ptr)先分配给变量并进行比较,一切都会好起来的。

这两种方法有什么区别?

4

2 回答 2

2

您在条件中提取第一个字符,while然后在 中提取第二个字符printf。所以你只打印一个循环中的每个第二个字符。

如果需要,请执行以下操作:

int c;

while ((c = getc(ptr)) != EOF) {
printf("%c", c);
}
于 2020-03-13T14:08:06.143 回答
1

你当然可以,但你需要保存读取的字符。如果你不这样做,它就会丢失。

int main()
{
   FILE *ptr = fopen("data.txt", "r");

   if (ptr != NULL)
   {
      int c;
      while ((c = getc(ptr)) != EOF)    //print all contents in data.txt
         printf("%c", c);
   }
   else
      printf("Open file failed.");

   return 0;
}
于 2020-03-13T14:10:40.647 回答