#include #include #include "ex1304a.h" #include "ex1305a.h" int main(int argc, char *argv[]) { int i; char data_file[LEN]; CITY cdata[COUNT]; FILE *fp; /* 手順(1) コマンドライン引数のエラー処理 */ if ( argc != 3 ) { printf("[エラー] コマンドライン引数が不正です\n"); printf("データファイル名と並べ替えコマンド(p または n)を指定してください\n"); return 1; } if ( ) { printf("[エラー] コマンド %s は定義されていません\n", argv[2]); return 1; } /* 手順(2) データファイルの読み込み */ printf("データファイル: %s\n", argv[1]); if ( (fp = fopen(argv[1], "r")) == NULL ) { printf("[エラー] %s をオープンできません\n", argv[1]); return 1; } for ( i = 0; i < COUNT; i++ ) { fscanf(fp, "%s%d", cdata[i].name, &(cdata[i].population)); } fclose(fp); printf("\n"); /* 手順(3) コマンドに応じて関数呼び出しとメッセージを切り替え */ sort_p(cdata); printf("人口の降順に並べ替えると:\n"); sort_n(cdata); printf("市の名前のアルファベット順に並べ替えると:\n"); /* 手順(4) 並べ替え後の内容を出力 */ for ( i = 0; i < COUNT; i++ ) { printf("%2d) %s\n", i+1, cdata[i].name); printf(" (%6d人)\n", cdata[i].population); } return 0; }