一切檔案的結尾都是值為 1的位元組嗎?

時間 2021-05-13 06:56:49

1樓:Knly Com

fget返回int,明白嗎?

遇到內容為***的位元組,返回值是:

00000000 00000000 00000000 11111111

(255)

遇到檔案尾部的返回值是:

11111111 11111111 11111111 11111111

(-1)

-1不是乙個位元組的-1,是四個位元組的。

2樓:旅人

首先,檔案的內容結尾是什麼是沒有限制的。常見的檔案操作函式只是發現檔案讀完了給你返回-1,也就是說,這個-1是這個函式自作主張給你的,用以提醒你檔案讀完了。

3樓:張強

你理解錯了,檔案內容是在放在char *引數中的,而返回值-1是fread函式本身的返回值,和檔案內容沒有任何關係,fread應該是首先獲取檔案大小,然後使用檔案指標乙個個讀取放在char *引數中,如果讀到超過檔案大小,就返回-1即eof。想一下你如果自己寫乙個fread函式應該怎麼寫?或者簡單一些,寫乙個strcpy函式,內部使用'\0'來判斷字串是否結束,但返回的並不是'\0'而是字串長度吧。

4樓:澪同學

以 fread 為例

size_t

fread

(void

*buffer

,size_t

size

,size_t

count

,FILE

*stream

)這裡你是通過返回值來判斷是否讀到 EOF 的,而不是說 buffer 裡面有沒有讀到 -1。

EOF 只是標誌了狀態,跟檔案內容無關,畢竟檔案就是個二進位製流。你老師所謂的讀到 -1 意思是應該是讀到返回值為 -1。

但是這裡返回 -1 還有可能是讀取的時候發生了其他錯誤,下一步應該是用 feof 和 ferror 去檢查究竟是遇到了 EOF 還是 Error。

最後,雖然通常情況下 EOF 的確是 -1,但是印象中標準中只規定了 EOF 為負即可,所以說 EOF 是 -1 -2 還是 -3 都是有可能的。

5樓:秦雨貓

除非平台把位元組的位數定義到至少16位,並且至少和int的長度一樣,否則-1根本就不在合法字元的範圍裡。(不過如果真的這樣,fgetc就沒法用了)

6樓:冒泡

不是以fgetc為例,從檔案中讀到的內容是乙個位元組,值域0~255(1byte按8bit算),根本不包括-1,談何讀到呢

但fgetc是可以返回-1的,這時候表示檔案結束,而非讀到某個位元組了

7樓:Chow Anod

值為-1的位元組即0xff,所以答案是NO。

檔案的結尾都是值為-1的整數,或者說是int。要知道int一般是4位元組長,和0xff是不相等的。

一切的冷暴力都是有原因的?

他就是不喜歡你罷了 同樣天蠍座,我只對不在乎的人冷暴力,發自內心的不在乎罷了 兩個人如果互相在乎,短時間內一定會聯絡的。 筱雪 相處是一門需要兩個人共同學習成長的學識,現在社會多少情侶的分崩離析是因為缺乏足夠的溝通,冷暴力在我看來比肢體暴力和語言暴力更傷人,建議多溝通哦 Trish 沒冷暴力對過誰,...

為什麼父母總是認為他們做的一切都是為你好,你反對了還說你這個人固執,以後到了社會還怎麼生存?

歸去來兮 這是父母的通病,但你不能否認這些對你好都是父母發自內心的,可能會有些考慮不到你的感受,更多的你是在其中收益而不是受害,所以你可以嘗試改變自己,讓自己適應而不是反抗。從另一方面說這也是一種提前適應社會。 小楽 因為他們吃了太多的苦,受過太多的累,卻不想讓自己的孩子重蹈覆轍。如果換位,我們也會...

濕氣的一切相關都是利益鏈麼?

psasura 大規模的宣傳肯定有利益關係。濕氣有本氣也有外邪,體內濕氣重會造成亞健康似的身體狀態,長時間處於這種狀態會造成很多毛病 濕熱或寒濕會衍生出好多問題 這些在中醫的語境裡都是病態,堅持健身和選擇健康的生活方式可以擺脫這種狀態,能不能做到或依靠中醫都是個人的選擇。 痞子書生混長安 看診斷是否...