这是代码的一部分,它的工作并不像预期的那样(至少和我期望的那样)。
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)。我无法弄清楚我做错了什么。
答案 0 :(得分:2)
文件位置以字节为单位。你没有指定文本文件的确切格式,但是假设单字节行终止(例如在Unix或Linux上)和每行之间的空白行,如你所示,每个数字的三个字节似乎对第一个有意义9:
基本上你的文件格式似乎是:
1\n\n2\n\n3\n\n...
如果您使用Windows,并且空行是错误的,则结构将改为:
1\r\n2\r\n3\r\n...
对于前9个,它仍然是每个数字的三个字节。