文字檔案、二進位制檔案操作01(C)
阿新 • • 發佈:2019-01-03
現有一個二進位制檔案 E81_data.bin,其中儲存了 20 個整數, 請將檔案儲存至 C 盤根目錄下的 cdata 資料夾。 編寫程式
完成如下功能:
(1) 編寫一個函式, 讀取出這些整數。
(2) 編寫一個函式,對所有整數按照從小到大排序。
(3) 編寫一個函式, 將排序後的所有整數寫到 C 盤根目錄下的 cdata 資料夾中的文字檔案 E81_result.txt 中,每個整數佔一行。
(4) 編寫測試程式。
/*========================================================================= *學號:1527403059 *作業:E81 *功能:(1) 編寫一個函式,讀取出這些整數。 (2) 編寫一個函式,對所有整數按照從小到大排序。 (3) 編寫一個函式,將排序後的所有整數寫到 C 盤根目錄下的 cdata 資料夾 中的文字檔案 E81_result.txt 中,每個整數佔一行。 (4) 編寫測試程式。 *作者:陸胤任 *日期:2016.1.3 *=========================================================================*/ #include<stdio.h> #include<stdlib.h> struct NumberNode //結構體 { int num; }; /*function define *@brief:讀取出這些整數 *@param:*Filename:檔名 NumberNode *node:結構體陣列首元素地址名 *@reval:void */ void ReadInfo(char *Filename,struct NumberNode *node) { FILE *fp; //定義指向FILE型別檔案的指標變數 int i; fp=fopen(Filename,"rb"); //開啟二進位制檔案 if(NULL==fp) //檢查檔案是否開啟成功 { printf("開啟檔案失敗!\n"); exit(0); } for(i=0;i<20;i++) //二進位制方式讀取檔案 { fread(&node[i],sizeof(struct NumberNode),1,fp); } fclose(fp); //關閉檔案 } /*function define *@brief:對所有整數按照從小到大排序。 *@param:struct NumberNode *node:結構體陣列首元素的地址 *@reval:void */ void Sort_NumberNode(struct NumberNode *node) { int i,j,min; struct NumberNode temp; for(i=0;i<19;i++) //選擇排序 { min=i; for(j=i+1;j<20;j++) { if(node[j].num<node[min].num) { min=j; } } if(min!=i) { temp=node[min]; node[min]=node[i]; node[i]=temp; } } } /*function define *@brief:將排序後的所有整數寫到 C 盤根目錄下的 cdata 資料夾中的文字檔案 E81_result.txt 中,每個整數佔一行。 *@param:*Filename:檔名 struct NumberNode *node:結構體陣列首元素的地址 *@reval:void */ void Save_sort_NumberNode(char *Filename,struct NumberNode *node) { FILE *fp; int i; fp=fopen(Filename,"w"); if(NULL==fp) //檢查是否開啟檔案失敗 { printf("檔案開啟失敗!\n"); exit(0); } for(i=0;i<20;i++) //二進位制方式寫入檔案 { fprintf(fp,"%d",node[i].num); fprintf(fp,"\n"); //格式化輸入換行符 printf("%d",node[i].num); //在螢幕上輸出整數 printf("\n"); //在螢幕上輸出換行符 } } int main() { struct NumberNode node[20]; //定義結構體陣列 ReadInfo("C:\\cdata\\E81_data.bin",node); //呼叫函式 Sort_NumberNode(node); //呼叫函式 printf("排序後的整數為:\n"); Save_sort_NumberNode("C:\\cdata\\E81_result.txt",node); //呼叫函式 return 0; }