1. 程式人生 > >fread 不能讀取最後一個數據塊

fread 不能讀取最後一個數據塊

今天遇到一個問題,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的時候開啟檔案,檔案中自然沒有剛插入的資料,所以造成了檔案讀不全的假象。