【发布时间】:2017-04-13 21:41:06
【问题描述】:
这个问题我已经坐了 2 天了,我不知道我做错了什么。我试过调试(有点?还是新的),点击这个链接:https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ 我试过谷歌和各种各样的东西。基本上我是从这种格式的文件中读取的:
R1 Fre 17/07/2015 18.00 FCN - SDR 0 - 2 3.211
我必须让程序将它读入一个结构,但是当我尝试打印信息时,它完全错了。我的代码如下所示:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_INPUT 198
typedef struct game{
char weekday[4],
home_team[4],
away_team[4];
int round,
hour,
minute,
day,
month,
year,
home_goals,
away_goals,
spectators;}game;
game make_game(FILE *superliga);
int main(void){
int input_number,
number_of_games = 198,
i = 0;
game tied[MAX_INPUT];
FILE *superliga;
superliga = fopen("superliga-2015-2016.txt", "r");
for(i = 0; i < number_of_games; ++i){
tied[i] = make_game(superliga);
printf("R%d %s %d/%d/%d %d.%d %s - %s %d - %d %d\n",
tied[i].round, tied[i].weekday, tied[i].day, tied[i].month,
tied[i].year, tied[i].hour, tied[i].minute, tied[i].home_team,
tied[i].away_team, tied[i].home_goals, tied[i].away_goals,
tied[i].spectators);}
fclose(superliga);
return 0;
}
game make_game(FILE *superliga){
double spect;
struct game game_info;
fscanf(superliga, "R%d %s %d/%d/%d %d.%d %s - %s %d - %d %lf\n",
&game_info.round, game_info.weekday, &game_info.day, &game_info.month,
&game_info.year, &game_info.hour, &game_info.minute, game_info.home_team,
game_info.away_team, &game_info.home_goals, &game_info.away_goals,
&spect);
game_info.spectators = spect * 1000;
return game_info;
}
【问题讨论】:
-
我认为
\n可能会导致fscanf出现问题 -
使用调试器逐行执行代码。并检查
fscanf返回的内容。 -
用 C 语言解析文本文件数据很糟糕。如果有帮助,我觉得你必须这样做。知道当你到达那里时,其他语言会为你提供更好的工具。
-
出了什么问题?你得到的输出是什么?
-
Elyasin,很多行看起来像这样:R19528456 X a 1952502352/6422476/0 1952598979.271333979 EKbt? - ? 93 - 6412588 -2147483648