簡體   English   中英

Lseek不起作用

[英]Lseek not working

我正在嘗試使用lseek檢查txt文件的大小。 不幸的是我不工作。 我的T.Txt包含16個字符:ABCDABCDDABCDABCD僅此而已。 因此,數字變量應為16 + 1。 為什么改為19? 為什么我不能使用SEEK_END-1從上一個位置1開始的第二個問題? 謝謝您的幫助。

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;
}

這可能是由於文件中的\\r\\n字符,在Windows系統上代表換行符。

在我的機器上(Mac OS X 10.10),如果文件末尾沒有任何換行符,即僅字符串: ABCDABCDDABCDABCD (輸出為:17),則代碼將為文件提供正確的結果。

您可以使用lseek()正常工作,只是結果lseek()off_tlong

您的文本文件可能包含BOM表頭0xEF,0xBB,0xBF 嘗試以十六進制格式打印文件內容,並查看它是否打印出這額外的3個字符。

您可以在[此處了解文件頭和BOM表]了解更多信息。( https://en.wikipedia.org/wiki/Byte_order_mark

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM