回覆列表
  • 1 # 扶尾貓秋風水清

    C語言還提供了用於整塊資料的讀寫函式。可用來讀寫一組資料,如一個數組元素,一個結構變數的值等。

    讀資料塊函式呼叫的一般形式為:

    fread(buffer,size,count,fp);

    寫資料塊函式呼叫的一般形式為:

    fwrite(buffer,size,count,fp);

    其中:

    buffer是一個指標,在fread函式中,它表示存放輸入資料的首地址。在fwrite函式中,它表示存放輸出資料的首地址。

    size表示資料塊的位元組數。

    count表示要讀寫的資料塊塊數。

    fp表示檔案指標。

    例如:

    fread(fa,4,5,fp);

    其意義是從fp所指的檔案中,每次讀4個位元組(一個實數)送入實陣列fa中,連續讀5次,即讀5個實數到fa中。

    【例】從鍵盤輸入兩個學生資料,寫入一個檔案中,再讀出這兩個學生的資料顯示在螢幕上。

    #include<stdio.h>

    structstu

    {

    charname[10];

    intnum;

    intage;

    charaddr[15];

    }boya[2],boyb[2],*pp,*qq;

    main()

    {

    FILE*fp;

    charch;

    inti;

    pp=boya;

    qq=boyb;

    if((fp=fopen("d:\\jrzh\\example\\stu_list","wb+"))==NULL)

    {

    printf("Cannotopenfilestrikeanykeyexit!");

    getch();

    exit(1);

    }

    printf("\ninputdata\n");

    for(i=0;i<2;i++,pp++)

    scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);

    pp=boya;

    fwrite(pp,sizeof(structstu),2,fp);

    rewind(fp);

    fread(qq,sizeof(structstu),2,fp);

    printf("\n\nname\tnumberageaddr\n");

    for(i=0;i<2;i++,qq++)

    printf("%s\t%5d%7d%s\n",qq->name,qq->num,qq->age,qq->addr);

    fclose(fp);

    }

    本例程式定義了一個結構stu,說明了兩個結構陣列boya和boyb以及兩個結構指標變數pp和qq。pp指向boya,qq指向boyb。程式第16行以讀寫方式開啟二進位制檔案“stu_list”,輸入二個學生資料之後,寫入該檔案中,然後把檔案內部位置指標移到檔案首,讀出兩塊學生資料後,在螢幕上顯示。

  • 2 # 扶尾貓秋風水清

    C語言還提供了用於整塊資料的讀寫函式。可用來讀寫一組資料,如一個數組元素,一個結構變數的值等。

    讀資料塊函式呼叫的一般形式為:

    fread(buffer,size,count,fp);

    寫資料塊函式呼叫的一般形式為:

    fwrite(buffer,size,count,fp);

    其中:

    buffer是一個指標,在fread函式中,它表示存放輸入資料的首地址。在fwrite函式中,它表示存放輸出資料的首地址。

    size表示資料塊的位元組數。

    count表示要讀寫的資料塊塊數。

    fp表示檔案指標。

    例如:

    fread(fa,4,5,fp);

    其意義是從fp所指的檔案中,每次讀4個位元組(一個實數)送入實陣列fa中,連續讀5次,即讀5個實數到fa中。

    【例】從鍵盤輸入兩個學生資料,寫入一個檔案中,再讀出這兩個學生的資料顯示在螢幕上。

    #include<stdio.h>

    structstu

    {

    charname[10];

    intnum;

    intage;

    charaddr[15];

    }boya[2],boyb[2],*pp,*qq;

    main()

    {

    FILE*fp;

    charch;

    inti;

    pp=boya;

    qq=boyb;

    if((fp=fopen("d:\\jrzh\\example\\stu_list","wb+"))==NULL)

    {

    printf("Cannotopenfilestrikeanykeyexit!");

    getch();

    exit(1);

    }

    printf("\ninputdata\n");

    for(i=0;i<2;i++,pp++)

    scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);

    pp=boya;

    fwrite(pp,sizeof(structstu),2,fp);

    rewind(fp);

    fread(qq,sizeof(structstu),2,fp);

    printf("\n\nname\tnumberageaddr\n");

    for(i=0;i<2;i++,qq++)

    printf("%s\t%5d%7d%s\n",qq->name,qq->num,qq->age,qq->addr);

    fclose(fp);

    }

    本例程式定義了一個結構stu,說明了兩個結構陣列boya和boyb以及兩個結構指標變數pp和qq。pp指向boya,qq指向boyb。程式第16行以讀寫方式開啟二進位制檔案“stu_list”,輸入二個學生資料之後,寫入該檔案中,然後把檔案內部位置指標移到檔案首,讀出兩塊學生資料後,在螢幕上顯示。

  • 中秋節和大豐收的關聯?
  • 明朝的詩配圖畫?