Wrote this program which should be able to print out all lines from a txt file, but it only prints one, been looking at it for 1 hour now and i cant find the mistake, any help would be appriciated! 🙂
1 16.07.2011 kl. 17.00 OB – FCN 2 – 0 6.965
1 17.07.2011 kl. 14.00 FCM – SIF 1 – 2 5.370
1 17.07.2011 kl. 16.00 ACH – HBK 3 – 0 2.227
1 17.07.2011 kl. 16.00 SDR – FCK 0 – 2 4.992
the first 4 lines.
#include <stdio.h>
#include <stdlib.h>
#define MAX_LINE_LGT 200
#define NAME_MAX 200
#define TEAM_MAX 200
struct team{
char name[NAME_MAX];
int five_or_more_goals;
};
typedef struct team team;
void read_data_1(const char *file_name, team teams[]){
FILE *ifp;
char team1[NAME_MAX];
char team2[NAME_MAX];
int goal1, goal2;
int dag, month, year;
double clock;
int attendance;
int round;
team local_match;
ifp = fopen(file_name, "r");
while (fscanf(ifp, "%d %d.%d.%d kl. %lf %4s - %4s %d - %d %d\n", &round, &dag, &month, &year, &clock, team1, team2, &goal1, &goal2, &attendance) == 10){
printf("runde %d den %d %d %d klokken %.2lf, mellem %s og %s endte %d - %d %d så kampen\n", round, dag, month, year, clock, team1, team2, goal1, goal2, attendance);
}
fclose(ifp);
}
int main(void) {
team all_matches_teams[TEAM_MAX];
read_data_1("superliga-2011-2012", all_matches_teams);
return 0;
}
Your attendance value at the end of each line of input is causing you the problem. You’ll need to either parse it as a float or two decimals separated by a period, not just a single decimal. It should work with the code changes below, assuming attendance never reaches a million: