1. 程式人生 > >C語言隨機讀寫資料檔案(一)

C語言隨機讀寫資料檔案(一)

void rewind(FILE * fp):將檔案位置標記重新指向檔案開頭,該函式沒有返回值;
【例子】計算機D盤根目錄有一個存放學生資訊的stud.dat檔案,請先講檔案資訊顯示在控制檯,然後在將資料複製到F盤stud.dat檔案中。

#include <stdio.h>
#include <stdlib.h>

int main(){
    struct Student{
        char name [10];
        int num;
        int age;
        char addr [30];
    } stud [5];

    FILE * input = fopen("D:\\stud.dat","rb");

    if(input == NULL){
        printf("無法開啟檔案");
        exit(0);
    }

    int validCount;//實際讀取多少資料項
    while((validCount = fread(stud,sizeof(struct Student),5/*最多讀取5個數據項*/,input))!=0){
        for(int i=0;i<validCount;++i){
            printf("%s %d %d %s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
        }
    }

    rewind(input);//將檔案位置標記重新指向檔案開頭,否則因檔案位置標記經過上面迴圈執行指向檔案末尾而無法將已有檔案中的資料複製到新檔案中。

    FILE * output = fopen("F:\\stud.dat","wb");

    if(output == NULL){
        printf("無法開啟檔案");
        exit(0);
    }

    while((validCount = fread(stud,sizeof(struct Student),5/*最多讀取5個數據項*/,input))!=0){
        fwrite(stud,sizeof(struct Student),validCount,output);
    }
    fclose(output);
    fclose(input);
    return 0;
}