Fscanf很好地递增文件位置指针

时间:2015-10-29 09:57:05

标签: c pointers

这是代码的一部分,它的工作并不像预期的那样(至少和我期望的那样)。

 fscanf(**readFile,"%d", buffer.head);

**readFile是一个指向指针的指针,指向我打开的文件。在文件中有数字写在另一个下面,如下所示:

1

2

3

4

5

6

7

8

9

10

奇怪的是,当我用:

打印出文件指针的位置时
 printf("Position %ld", ftell(**readFile));

我得到奇数:1 3 5...这意味着每次我在循环中运行fscanf(**readFile,"%d", buffer.head);时,文件指针都不会指向下一个数字(例如2),而是指向它到第3个数字(3)。我无法弄清楚我做错了什么。

1 个答案:

答案 0 :(得分:2)

文件位置以字节为单位。你没有指定文本文件的确切格式,但是假设单字节行终止(例如在Unix或Linux上)和每行之间的空白行,如你所示,每个数字的三个字节似乎对第一个有意义9:

基本上你的文件格式似乎是:

1\n\n2\n\n3\n\n...

如果您使用Windows,并且空行是错误的,则结构将改为:

1\r\n2\r\n3\r\n...

对于前9个,它仍然是每个数字的三个字节。