#include "harulib.h" #include "bawling.h" //文字列バッファサイズ #define STRBUF_SIZE 256 //データロード bool LoadScoreFile( DataFile *data, char *filename, int id ) { FILE *fin; char buf[ STRBUF_SIZE ]; //バッファ char str_id[ STRBUF_SIZE ]; //ID char str_score[ 10 ][ STRBUF_SIZE ]; //スコア文字列 int i, j; bool find_flag = false; //指定されたIDが見つかったか fin = fopen( filename, "r" ); if( fin == NULL ){ printf("%sがオープン出来ません。\n",filename); return false; } //フォーマット //ID<>日付<>1フレーム目のfirst second<>2フレーム目のfirst second<>... //一行ずつ読み込んで指定のIDを探す while( fgets( buf, 256, fin ) != NULL ){ //ID HaruSplit( buf, "<>", 0, str_id ); //比較 if( atoi( str_id ) == id ){ //指定のIDだった。 //日付 HaruSplit( buf, "<>", 1, data->m_date ); //スコア(まずは文字列として格納) for( i = 0; i < 10; i++ ){ HaruSplit( buf, "<>", 2+i, str_score[ i ] ); } //フラグセット find_flag = true; break; } } fclose( fin ); if( !find_flag ){ return false; } //スコア集計 for( i = 0; i < 10; i++){ //スコアの1投目、2投目、3投目は半角スペースで区切ってある //区切ってない場合はeUNDECIDEDを格納 for( j = 0; j < 3; j++ ){ if( HaruSplit( str_score[i], " ", j, buf ) ){ data->m_score[ i*3 + j ] = atoi( buf ); }else{ data->m_score[ i*3 + j ] = Bawling::eUNDECIDED; } } } return true; } //メイン関数 //引数1…データファイル名 引数2…ID int main(int argc, char* argv[]) { DataFile data; Bawling bawling; int i; int id; //表示するID bool ret; //ロードできたか //スコア入力 //引数に指定されたデータファイルから受け取り if( argc >= 2 ){ //引数2がID if( argc >= 3 ){ id = atoi( argv[2] ); }else{ id = 33; } ret = LoadScoreFile( &data, argv[1], id ); if( !ret ){ printf("正しくロードできませんでした。\n"); return 1; } }else{ printf("引数にデータファイルが指定されていません。\n"); return 1; } //初期化 bawling.Initialize(); //日付 bawling.InputDate( data.m_date ); //スコア入力 for( i = 0; i < 10; i++ ){ bawling.InputScore( i, data.m_score[ i*3 ], data.m_score[ i*3 + 1 ], data.m_score[ i*3 + 2 ] ); } //結果表示 bawling.DispResult(); return 0; }