Fscanf или Fgets? Чтение строки файла за строкой

Мне нужно написать программу на C для чтения файла, содержащего несколько строк текста, каждая строка содержит две переменные: число (%f) и строку:

EX: file.txt
============
24.0 Torino
26.0 Milano
27.2 Milano
26.0 Torino
28.0 Torino
29.4 Milano

Вот мой код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc, char *argv[])
{
    int r, line = 0, found = 0;
    float temp, t_tot = 0;
    char loc[32];


    FILE *fp;

    fp = fopen(argv[1], "r");

    if (fp == NULL)
    {
        printf ("Error opening the file\n\n'");
        exit(EXIT_FAILURE);
    }

    if (argc == 3)
    {
        r = fscanf(fp, "%f %s\n", &temp, loc);

        while (r != EOF)
        {
            line++;

            if (r == 2)
            {
                if(strcmp(argv[2], loc) == 0)
                {
                    t_tot += temp;
                    found++;
                }
            }
            else
                printf ("Error, line %d in wrong format!\n\n", line);
        }

        printf ("The average temperature in %s is: %.1f\n\n", argv[2], (t_tot/found);
    }

}

Программа должна прочитать всю строку и найти город, который я написал в argv[2]. Затем он сообщит мне среднюю температуру в этом городе, уведомив меня, если строка в файле имеет неправильный формат.

Программа правильно компилируется, но ничего не выводит на экран... как решить эту проблему? Правильно ли использовать fscanfв этом случае или лучше fgets?

Я студент, поэтому, пожалуйста, дайте мне "академический" способ решить эту проблему :)

7
задан Lc0rE 23 June 2012 в 10:07
поделиться