fread 不能讀取最後一個數據塊
阿新 • • 發佈:2019-02-09
今天遇到一個問題,fread()竟然不能讀取檔案中的最後一個數據塊。
我定義了一個結構體:
Persong
{
char name[10];
char phone[15];
}
以及兩個函式:
int insert(Person*person)
{
FILE *fd;
//...
fwrite();//意思一下流程
//...
}
int show(char *name)
{
FILE *fd;
//...
while(!feof(fd))//沒有到檔案尾
fread();//意思一下流程
//...
}
主函式:
狀態:void main() { //... insert(); show(); }
能夠成功insert,但是讀取的時候不能讀出剛插入的一個數據塊(Person結構體)。
搞了兩個小時,最後找出問題的我眼淚掉下來。
原來問題出在fclose(fd)。
兩個函式中分別打開了同一個檔案,但是我都忘記close,所以insert後沒有立即更新到檔案中,然後show的時候開啟檔案,檔案中自然沒有剛插入的資料,所以造成了檔案讀不全的假象。