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 が出力されます。12 ではなく 11 (0,1,2,3,4,5,6,7,8,9,\0) ではないのはなぜですか?

編集済み: (0,1,2,3,4,5,6,7,8,9,\r\n)

4

3 に答える 3

4

Windows システムでは、改行は実際には、キャリッジ リターンと改行文字 ( ) の2"\r\n"文字です。

したがって、書き出す文字列の 10 文字と、改行用の 2 文字があります。

于 2013-04-06T09:43:01.940 に答える
0

おそらくWindowsで実行されていますか?OS X と Linux では、これは 11 を出力します。

于 2013-04-06T09:43:23.693 に答える
0

Windows システムを使用している場合は、余分な\n. 削除して何が得られるか見てみましょう:

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