以下の作成したソースファイルをヘッダファイル(test.h)とmain.c,swap_Data.c,bubble_sort.c,read_file.c,show_result.cというようにファイルを分割したいです。いろいろなサイトを参考に作成しましたが、なかなか実行できません。
恐らく変数や関数の宣言がちゃんと出来ていないことが原因かと思いますが、よくわかりません。
ご教授よろしくお願いいたします。
簡単でも構いませんので、分け方のソースを書いていただけるとありがたいです。
C言語
1#include <stdio.h> 2#include <stdlib.h> 3 4#define N 100 5 6typedef struct data { 7 char student_no[128]; 8 int score_japanese; 9 int score_math; 10 int score_science; 11 int score_society; 12 int score_sum; 13} Data; 14 15void swap_Data(Data *x, Data *y){ 16 Data tmp = *x; 17 *x = *y; 18 *y = tmp; 19} 20 21 22void bubble_sort(Data *df, int n) { 23 for (int i = 0; i < n-1; i++) { 24 for(int j = n-1; j > i; j--) { 25 if(df[j].score_sum - df[j-1].score_sum > 0) { 26 swap_Data(&df[j-1], &df[j]); 27 } 28 } 29 } 30} 31 32void read_file(char *filename, Data *df, int *n) { 33 FILE *fp; 34 int ret; 35 int cnt = 0; 36 37 fp = fopen(filename, "r" ); 38 if (fp == NULL) { 39 printf( "cannot open %s\n", filename); 40 exit(1); 41 } 42 43 while((ret = fscanf(fp, "%[^,],%d,%d,%d,%d ", 44 df[cnt].student_no, &df[cnt].score_japanese, &df[cnt].score_math, & 45 df[cnt].score_science, &df[cnt].score_society)) != EOF) { 46 47 df[cnt].score_sum = df[cnt].score_japanese + df[cnt].score_math 48 + df[cnt].score_science + df[cnt].score_society; 49 50 cnt++; 51 } 52 53 *n = cnt; 54} 55 56void show_result(Data *df, int n) { 57 int i; 58 59 printf("番号 国語 数学 理科 社会 合計\n"); 60 printf("----------------------------------\n"); 61 for (int i = 0; i < n; i++) { 62 printf("%s %5d%6d%6d%6d%6d\n", 63 df[i].student_no, df[i].score_japanese, df[i].score_math, 64 df[i].score_science, df[i].score_society, df[i].score_sum); 65 } 66} 67 68int main(void) { 69 int n; 70 Data score_data[N]; 71 72 read_file("test_result.txt", score_data, &n); 73 74 bubble_sort(score_data, n); 75 76 show_result(score_data, n); 77 78 return 0; 79}
試行錯誤の過程で分割したソースコードはあったりしますか?
そのソースコードをビルド(コンパイル)しようとした際に出るエラーメッセージ等を提示することはできますか?