不会从文件读取到结构
发布时间:2020-12-16 06:52:52 所属栏目:百科 来源:网络整理
导读:我一直坐在这个问题上2天了,我无法弄清楚我做错了什么.我已经尝试过调试(有点像?还是那种新的),按照这个链接: https://ericlippert.com/2014/03/05/how-to-debug-small-programs/我已经尝试了谷歌和各种各样的东西.基本上我正在阅读这种格式的文件: R1 Fr
我一直坐在这个问题上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 %dn",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 %lfn",&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; } 解决方法
问题出在您的文件中.它以空格开头,而不是如控制字符串中所述的R.
检查fscanf()的返回值,你会发现它每次都为零. 如果在fscanf()调用中添加前导空格,问题就会解决,如下所示: fscanf(superliga," R%d %s %d/%d/%d %d.%d %s - %s %d - %d %lfn",&spect); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |