0

私は C クラスのためにこのプログラムを書きました。基本的に、ユーザーを競馬場に連れて行き、さまざまな馬のオッズを表示し、ユーザーが賭けることができるようにします。当初、講師は結果をテキスト ファイルまたはバイナリ ファイルに書き込むことのみを希望していたので、ユーザーがいつでも過去の結果を表示できるようにしていました。

彼は最近、馬を順番にグループ化するためのバブルソートを含めてほしいと言っていました。つまり、馬 1、馬 1、馬 1、馬 1、馬 2、馬 2... などです。

strcmp() を使用してバブル ソートを計算できると確信していますが、彼はまた、その馬が過去に何回レースに勝ったかを表示することも望んでいます。

私の質問は次のとおりです。文字/文字列配列のみを扱うような表示を作成できますか? 機能しないソリューションの構築に次の 4 時間を費やしたくありません。

前もって感謝します、

ps プログラムのその部分の関数は次のとおりです。

void viewWinners() {
    FILE *zacksTrackStats;

    char horses[MAX_SIZE] = {0};        

    if ((zacksTrackStats = fopen("zacksTrackStats.txt", "r")) == NULL)
    {
        perror ("error");
        exit (0);
    }

    while (fgets(horses, sizeof(horses), zacksTrackStats) != NULL)
    {
        printf ("%s", horses);
    }

    fclose(zacksTrackStats);
    pause;
}
4

3 に答える 3

1

はい、できます。fscanfファイルからデータを操作するには、 (または)を使用できますsscanf

sscanf(char *source, format, &dest, ...)

例えば ​​:

int occurences[NUMBER_OF_HORSES_MAX];
int count = 0;
int temp = 0;
int i;

for(i = 0; i < NUMBER_OF_HORSES_MAX; ++i)
{
    occurences[i] = 0;
}

while (fgets(horses, sizeof(horses), zacksTrackStats) != NULL)
{
    sscanf(horses, "%d", &temp);
    occurences[temp] += 1;

    printf ("Current horse : %s", horses);

    count++;
}

for(i = 0; i < count; ++i)
{
    printf("Horse %d has won %d times\n", i, occurences[i]);
}
于 2013-01-30T23:31:11.920 に答える
1

txtを数字に、またはその逆に変換することは完全に可能です。

この古い投稿をチェックしてください: 文字列を整数Cに変換する

于 2013-01-30T22:12:48.877 に答える
1

もちろんできます。正式名称は「馬1」と「馬2」ですか?その場合は、各馬のデータを整数配列に格納するだけです。そうでない場合は、ルックアップ テーブルを作成する必要があります。各馬が何回勝ったかの情報を保存し、結果を出力します。

于 2013-01-30T22:09:06.223 に答える