0

我为我的 C 课编写了这个程序。它基本上将用户带到马场,显示不同马匹的赔率并允许用户下注。最初,我的导师只希望我们将结果写入文本或二进制文件,以便用户可以随时查看过去的结果。

他最近告诉我们,他希望我们包含冒泡排序来按顺序对马进行分组,即马 1、马 1、马 1、马 1、马 2、马 2 ......等。

我确信我可以使用 strcmp() 计算出冒泡排序,但他还希望我们显示这匹马过去赢得比赛的次数。

我的问题是:我能做这样一个只处理字符/字符串数组的显示吗?我不想花我接下来的四个小时来构建一个行不通的解决方案。

提前致谢,

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

当然可以。实际名称是“horse 1”和“horse 2”吗?如果是这样,您可以将每匹马的数据存储在一个整数数组中。如果没有,那么您必须制作一个查找表。存储每匹马获胜次数的信息并打印结果。

于 2013-01-30T22:09:06.223 回答
1

将 txt 转换为数字是完全可能的,反之亦然。

查看这篇较早的帖子: 将字符串转换为整数 C

于 2013-01-30T22:12:48.877 回答
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 回答