SlideShare a Scribd company logo
1 of 6
HW11
DUE:2015/12/14 23:59
Problem 01.
 讀入兩個text file(老師給的f1.txt和f2.txt)
 將裡面的資料按照原子數小到大的順序排列輸出到一個binary檔中並同時顯
示在螢幕上
 若兩個檔案有原子數相同的資料僅需輸出一筆
 前提:同一個file裡面不會有相同的兩筆資料
Problem 01.
 void file_merge(FILE *in1p, FILE *in2p, FILE *outp);
 需實作之函式,做資料合併的動作
 int scan_element(element_t *einp);
 讀取使用者輸入並存入element_t中,作業實作時用不到~
 Void print_element(element_t eoutp);
 在螢幕上印出一筆資料
 Void fprint_element(FILE *out_file, element_t eoutp);
 印一筆資料到檔案中,實作中因為我們要輸出binary data所以也用不到~
 int fscan_element(FILE *fp, element_t *einp);
 從檔案讀一筆資料並存進element_t中,
 return 1代表成功,0代表失敗,EOF代表檔案結尾
Problem 01.
 用flag_one和flag_two的值判斷有沒有成功讀進資料
 flag_one = fscan_element(in1p, &from_one);
 flag_two = fscan_element(in2p, &from_one);
 用from_one.anum跟from_two.anum比較原子數
 寫資料進檔案用fwrite()
 舉例寫from_one的資料進去: fwrite(&from_one, sizeof(element_t), 1, outp);
Problem 01.
 要寫的區塊有兩個(有兩個 /* fill_me */)
 第一部分是兩個檔案每次抓一筆資料來比較,原子數較小的輸出,並從那一
個檔案再讀一筆新資料,直到其中一個檔案讀完跳出迴圈(理論上…)
 第二部分是將還沒讀完的檔案中剩下的data逐一讀進來然後輸出
輸出的檔案記得用筆記本打開來
看看,顯示亂碼才是正確的喔!!!!

More Related Content

More from Jessica Hsieh

More from Jessica Hsieh (10)

Hw12#5
Hw12#5Hw12#5
Hw12#5
 
10401_206296_Hw12
10401_206296_Hw1210401_206296_Hw12
10401_206296_Hw12
 
10401_206296_Hw9
10401_206296_Hw910401_206296_Hw9
10401_206296_Hw9
 
10401_206296_Hw8
10401_206296_Hw810401_206296_Hw8
10401_206296_Hw8
 
10401_206296_Hw7
10401_206296_Hw710401_206296_Hw7
10401_206296_Hw7
 
10401_206296_Hw6
10401_206296_Hw610401_206296_Hw6
10401_206296_Hw6
 
10401_206296_Hw4&5
10401_206296_Hw4&510401_206296_Hw4&5
10401_206296_Hw4&5
 
10401_206296_Hw2
10401_206296_Hw210401_206296_Hw2
10401_206296_Hw2
 
10401_206296_Hw1
10401_206296_Hw110401_206296_Hw1
10401_206296_Hw1
 
Homework7補充教學
Homework7補充教學Homework7補充教學
Homework7補充教學
 

10401_206296_Hw11

  • 2. Problem 01.  讀入兩個text file(老師給的f1.txt和f2.txt)  將裡面的資料按照原子數小到大的順序排列輸出到一個binary檔中並同時顯 示在螢幕上  若兩個檔案有原子數相同的資料僅需輸出一筆  前提:同一個file裡面不會有相同的兩筆資料
  • 3. Problem 01.  void file_merge(FILE *in1p, FILE *in2p, FILE *outp);  需實作之函式,做資料合併的動作  int scan_element(element_t *einp);  讀取使用者輸入並存入element_t中,作業實作時用不到~  Void print_element(element_t eoutp);  在螢幕上印出一筆資料  Void fprint_element(FILE *out_file, element_t eoutp);  印一筆資料到檔案中,實作中因為我們要輸出binary data所以也用不到~  int fscan_element(FILE *fp, element_t *einp);  從檔案讀一筆資料並存進element_t中,  return 1代表成功,0代表失敗,EOF代表檔案結尾
  • 4. Problem 01.  用flag_one和flag_two的值判斷有沒有成功讀進資料  flag_one = fscan_element(in1p, &from_one);  flag_two = fscan_element(in2p, &from_one);  用from_one.anum跟from_two.anum比較原子數  寫資料進檔案用fwrite()  舉例寫from_one的資料進去: fwrite(&from_one, sizeof(element_t), 1, outp);
  • 5. Problem 01.  要寫的區塊有兩個(有兩個 /* fill_me */)  第一部分是兩個檔案每次抓一筆資料來比較,原子數較小的輸出,並從那一 個檔案再讀一筆新資料,直到其中一個檔案讀完跳出迴圈(理論上…)  第二部分是將還沒讀完的檔案中剩下的data逐一讀進來然後輸出