1. 程式人生 > >計算機二級-C語言-程式填空題-190107記錄

計算機二級-C語言-程式填空題-190107記錄

//給定程式的功能是:呼叫fun函式建立班級通訊錄。通訊中記錄每位學生的編號,姓名和電話號碼。班級的人數和學生的資訊從鍵盤讀入,每個人的資訊作為一個數據塊(代表要使用結構體)寫到名為myfile5.dat的二進位制的檔案中。

//重要點:1,資料塊結構體的定義和使用。2,檔案指標的定義以及對檔案的讀寫操作。3,結構體的定義和使用。

#include <stdio.h>

#include <stdlib.h>

//包含工程所需要的標頭檔案,為什麼呢?因為之後會用到這些標頭檔案中定義的函式。

#define N 5

//定義一個變數的值為5,以後用到N的時候,就是5。

typedef struct [名稱]

{

  int num;

  char name[10];

  char tel[10];

}STYPE;

//C語言可以定義新型別,把這個結構體的新型別名稱定義為STYPE,以後使用STYPE就可以。(這裡是無名結構體)

void check();

//函式的宣告。如果函式是在呼叫的後面定義的,那麼就要進行宣告。

int fun(STYPE *std)

{

  FILE *fp;

  int i;

  if((fp=fopen("myfile5.dat","wb"))==NULL)  return (0);//開啟檔案格式為二進位制可寫格式

  printf("\nOutput data to file !\n");

  for(i=0;i<N;i++)

  {

    fwrite(&std[i],sizeof(STYPE),1,fp);//指標使用時,不需要加*,定義的時候需要。

    fclose(fp);//關閉檔案

    return(1);

  }

}

main()

{

  STYPE s[10]={{1,"aaaaa","111111"},{1,"bbbbb","222222"},{1,"ccccc","333333"},{1,"ddddd","444444"},{1,"eeeee","555555"}};

//STYPE為結構體型別,定義的時候直接使用。

  int k;

  k=fun(s);//呼叫fun()函式,把函式返回值賦予k,函式作用,把結構體內容,輸入到指定檔案中。

  if(k==1)

  {

    printf("Succeed!");

    check();//函式作用,把指定檔案中的內容顯示。

  }

  else

    printf("Fail!");

}

void check()

{

  FILE *fp;//定義了一個檔案指標fp.

  int i;

  STYPE s[10];//定義結構體陣列。

  if((fp=fopen("myfile5.dat","rb"))==NULL)

//開啟檔案,呼叫檔案開啟函式fopen,檔案指標進行判斷是否為空。"rb"格式開啟檔案(二進位制只讀格式)

  {

    printf("Fail !!\n");

    exit(0);//終止程式的執行。

  }

  printf("\nRead file and output to screen:\n");

  printf("\n  num  name  tel\n");

  for(i=0;i<N;i++)

  {

    fread(&s[i],sizeof(STYPE),1,fp);

//fread()函式,從檔案中開始讀取資料,第一個引數,從哪個位置開始讀,第二個引數一次讀多長,第三個引數一次讀這個長度的幾個,第四個引數,指標變數代表檔案。

    printf("%6d  %s  %s\n",s[i].num,s[i].name,s[i].tel);//結構體輸出格式。

  }

  fclose(fp);//把檔案關閉。

}