ftell返回11而不是10

时间:2019-04-20 18:42:43

标签: c file-pointer

我有一个文件BasicHTML,其中包含两行。

test.txt

这是C代码。

123456789
abcdefghi

我很困惑为什么行中有10个字符(FILE* fp; char str[20]; fp = fopen("test.txt", "r"); printf("%d", ftell(fp)); // 0 printf("%s", fgets(str, sizeof(str), fp)); // 123456789\n printf("%d", ftell(fp)); // 11 ),但是位置增加了11个字符。

[已编辑]

感谢评论。但是我不知道如何以正确的格式更新已经澄清的内容。我在这里注意到我在这个问题上做错了。
 1.在Windows中,"123456789\n"被存储为'\n',因此它返回11。
 2. "\r\n"会将fp = fopen("test.txt", "r")转换回"\r\n"。用二进制打开文件,'\n'"rb"应该读为fgets
 3.我必须在格式字符串中使用"123456789\r\n",因为%ld的返回类型为ftell

0 个答案:

没有答案