0
#include<stdio.h>

int main()
{
    FILE* f;
    f=fopen("book.txt","w");
    char* sentence="0123456789";
    fprintf(f,"%s\n",sentence);
    fseek(f,0,SEEK_END);
    int a=ftell(f);
    printf("%d\n",a);
    fclose(f);
    return 0;
}

我有上面的代码,当我运行它时会打印出 12 。为什么不是 11 (0,1,2,3,4,5,6,7,8,9,\0) 而不是 12?

已编辑:(0,1,2,3,4,5,6,7,8,9,\r\n)

4

3 回答 3

4

在 Windows 系统上,换行符实际上是两个字符:回车符和换行符 ( "\r\n")。

所以你有你写出的字符串中的十个字符,加上换行符的两个。

于 2013-04-06T09:43:01.940 回答
0

在 Windows 上运行,也许?在 OS X 和 Linux 上,这为我打印 11。

于 2013-04-06T09:43:23.693 回答
0

如果您在 Windows 系统上,您将打印两个换行符:#13 和 #10 通过添加额外的\n. 删除它广告,看看你得到了什么:

fprintf(f,"%s",sentence);
于 2013-04-06T09:44:15.110 回答