0

lseek を使用して txt ファイルのサイズを確認しようとしています。残念ながら私は働きません。私の T.Txt には 16 文字が含まれています:ABCDABCDDABCDABCD 何もありません。したがって、number 変数には 16+1 が必要です。なぜ代わりに19なのですか?SEEK_END-1 を使用して最後の位置 1 から開始できない 2 番目の問題。そのお手伝いをさせていただければ幸いです。

int main(void)
{
    int fd1 = open("T.txt", O_RDONLY);
    long  number;

    if (fd1 < 0) {
        return -1;
    }

    number = lseek(fd1, 0, SEEK_END); 
    printf("FILE size PROGRAM>C: %ld\n", number);

return 0;
}
4

2 に答える 2

3

これはおそらく\r\n、ファイル内の文字 (Windows システムでは改行を表す) が原因です。

私のマシン (Mac OS X 10.10) では、末尾に改行文字がない場合、つまり文字列: ABCDABCDDABCDABCD(出力は 17) のみであれば、コードはファイルに対して正しい結果を返します。

の結果が ではないlseek()ことを除いて、関数を正しく使用します。lseek()off_tlong

于 2014-11-22T13:43:43.173 に答える