C编程:在文件字符串中查找最大值

时间:2016-10-13 22:06:01

标签: c string file

我有这项任务,我无法弄明白。

我们有一个文件格式如下:

5
4 
100 500 250 300
1
700
3
300 150 175
2
920 680
8
20 10 15 25 50 30 19 23

在第一行,我们有拍卖总数。

之后,每两行代表一次拍卖。

在第一行有出价数量。在下一行中有实际出价。

例如,数字 4 描述了4次出价(100,500,250,300)的拍卖。

我的任务是确定每次拍卖的最高出价。这是我到目前为止所得到的。任何帮助将不胜感激。

#include <stdio.h>


int main() {

    FILE * ifp;
    char filename[100];

    printf("File name\n");
    scanf("%s", &filename);

    ifp = fopen (filename, "r");

    if (ifp == NULL) {
        printf("Error, File could not be opened.\n");
        return 1;
    }
    int i, num_auctions, auction, j, bid, max;

    fscanf(ifp, "%d", &num_auctions);

    for(i=0; i<num_auctions; i++) {
        fscanf(ifp, "%d", &auction);
        if (bid > max)
            max = bid;
            for(j=0; j<auction; j++){
                fscanf(ifp, "%d", &bid);
                printf("%d\n", bid);

            }
            printf("%d\n", max);
    }

    fclose(ifp);
    return 0;
}

1 个答案:

答案 0 :(得分:3)

这些是您的代码中的问题。

  1. bidmax未经初始化使用。修复是在声明它们时将它们设置为0.
  2. if (bid > max)支票位于错误的位置。它只检查每次拍卖的最后一次出价。修复方法是将该检查移到for
  3. 之后的内部fscanf循环中 每次拍卖后都需要清除
  4. max。修复方法是在外部max循环的顶部将for设置为0。