如何在C中存储从txt.file到struct的字符串



我下周一要做家庭作业,我需要有人指导我如何做下一步,因为我现在很困。

这是任务

本任务基于一份文件,其中包含2019-2020赛季丹麦超级联赛前26轮的比赛结果。输入文件的名称应该是matches-2019-2020.txt。例如,文件中的每一行都是匹配结果周五12/0719.00 FCM-EFB 1-0 7310这条线意味着FCM(FC Midtjelland(在7月12日(星期五(19:00主场对阵EFB(Esbjerg FB(,比赛有7310名观众观看,FCM进了一球,EFB在比赛中没有进球。

在任务中,所有匹配项都必须加载到structs数组(匹配数组(中。(如果你想的话,你可以假设锦标赛中正好有182场比赛。

结构必须存储有关比赛的星期几、日期(不包括年份(、两队、比赛结果和观众人数的信息。

现在的任务是查看所有的比赛结果,以形成一个团队阵列(团队阵列(,团队是一个结构。团队结构必须包含团队名称、分数、团队进球数和对团队进球数。如果你愿意,你可以假设有14支球队参加比赛。团队数组可以被视为将团队名称与团队结构相关联的关联数组,因此关联数组任务的一部分可以用于此任务。如果您愿意,您可以将团队放置在团队阵列中固定的、预先编程的位置。

现在必须对球队的阵容进行排序,这样我们才能在26轮比赛后找到比赛的位置。在这项任务中,它主要按分数排序,其次按净胜球排序。赢的比赛得3分,平的比赛得1分,输的比赛不得分。在标准输出上打印锦标赛积分榜,每支队伍一行,格式如下:

队名逐队得分每队得分。FCM 65 80 30意味着Middjyland队获得65分,进80球,丢30球努力将位置打印得很好,四个同样宽的列以自然清晰的方式缩进。

这是的文本文件

Fre     12/07 19.00     FCM - EFB     1 - 0     7310   
Son     14/07 12.00     SDR - RFC     2 - 1     4734   
Son     14/07 14.00     ACH - FCN     0 - 3     1653   
Son     14/07 14.00     LBK - AaB     2 - 0     2971   
Son     14/07 16.00     OB - FCK      2 - 3     9067   
Son     14/07 18.00     BIF - SIF     3 - 0     13056  
Man     15/07 19.00     HOB - AGF     1 - 1     4236   
Fre     19/07 19.00     FCK - AGF     2 - 1     15957  
Son     21/07 12.00     SIF - ACH     0 - 3     3535   
Son     21/07 14.00     AaB - SDR     1 - 1     4355   
Son     21/07 14.00     EFB - HOB     1 - 1     4452   
Son     21/07 16.00     RFC - BIF     2 - 2     5984   
Son     21/07 18.00     FCM - FCN     2 - 1     6142   
Man     22/07 19.00     OB - LBK      4 - 1     6339   
Fre     26/07 19.00     LBK - SDR     0 - 3     3168   
Lor     27/07 17.30     ACH - FCK     0 - 2     3565   
Son     28/07 12.00     HOB - RFC     2 - 2     2812   
Son     28/07 14.00     FCN - EFB     2 - 0     1982   
Son     28/07 16.00     AGF - FCM     0 - 1     11739  
Son     28/07 18.00     BIF - OB      3 - 2     13689  
Man     29/07 19.00     AaB - SIF     3 - 1     5885   
Fre     02/08 19.00     SIF - HOB     2 - 3     3468   
Lor     03/08 16.00     SDR - FCK     1 - 2     7417   
Son     04/08 12.00     RFC - FCN     3 - 1     3111   
Son     04/08 14.00     EFB - OB      0 - 1     4454   
Son     04/08 16.00     BIF - ACH     1 - 2     15148  
Son     04/08 18.00     FCM - AaB     1 - 0     7965   
Man     05/08 19.00     LBK - AGF     2 - 1     5475   
Fre     09/08 18.00     FCK - LBK     2 - 0     15747  
Fre     09/08 20.00     OB - RFC      1 - 0     6978   
Son     11/08 12.00     FCN - SIF     2 - 2     2038   
Son     11/08 14.00     AaB - EFB     4 - 0     4380   
Son     11/08 16.00     ACH - FCM     0 - 2     3179   
Son     11/08 18.00     HOB - BIF     0 - 2     4186   
Man     12/08 19.00     SDR - AGF     0 - 0     5160   
Fre     16/08 18.00     RFC - FCK     0 - 1     5118   
Fre     16/08 20.00     FCN - OB      2 - 0     2107   
Son     18/08 12.00     SIF - SDR     3 - 3     3277   
Son     18/08 14.00     EFB - LBK     1 - 0     3396   
Son     18/08 16.00     FCM - HOB     1 - 1     6978   
Son     18/08 18.00     BIF - AaB     2 - 1     11349  
Man     19/08 19.00     AGF - ACH     2 - 0     7162   
Fre     23/08 19.00     HOB - OB      0 - 0     2274   
Son     25/08 12.00     LBK - RFC     2 - 0     3226   
Son     25/08 14.00     EFB - SIF     2 - 2     3844   
Son     25/08 16.00     SDR - FCM     0 - 2     5073   
Son     25/08 18.00     BIF - AGF     0 - 3     14145  
Son     25/08 20.00     FCK - FCN     3 - 1     11316  
Man     26/08 19.00     ACH - AaB     0 - 5     2709   
Fre     30/08 19.00     OB - SDR      0 - 0     7337   
Lor     31/08 16.00     FCN - HOB     2 - 1     2529   
Son     01/09 12.00     AGF - EFB     1 - 0     10420  
Son     01/09 14.00     RFC - SIF     2 - 0     4021   
Son     01/09 14.00     ACH - LBK     2 - 1     1234   
Son     01/09 16.00     AaB - FCK     1 - 0     11645  
Son     01/09 18.00     FCM - BIF     1 - 0     10944  
Fre     13/09 19.00     SDR - ACH     0 - 0     4743   
Son     15/09 12.00     AGF - AaB     3 - 0     10235  
Son     15/09 14.00     EFB - RFC     0 - 3     3422   
Son     15/09 14.00     LBK - FCM     0 - 3     4139   
Son     15/09 16.00     HOB - FCK     2 - 1     5428   
Son     15/09 18.00     BIF - FCN     4 - 2     14648  
Man     16/09 19.00     SIF - OB      0 - 3     3502   
Fre     20/09 19.00     OB - AGF      1 - 2     10441  
Son     22/09 12.00     HOB - SDR     1 - 1     2453   
Son     22/09 14.00     FCN - AaB     2 - 1     3031   
Son     22/09 14.00     SIF - LBK     2 - 3     2452   
Son     22/09 16.00     EFB - BIF     3 - 1     5907   
Son     22/09 18.00     FCK - FCM     0 - 0     24464  
Man     23/09 19.00     RFC - ACH     2 - 1     3379   
Fre     27/09 19.00     LBK - HOB     2 - 1     3093   
Lor     28/09 17.00     FCK - SIF     4 - 2     18393  
Son     29/09 12.00     AGF - FCN     3 - 1     9149   
Son     29/09 14.00     AaB - RFC     0 - 3     5083   
Son     29/09 16.00     FCM - OB      0 - 1     8618   
Son     29/09 18.00     SDR - BIF     2 - 1     6067   
Man     30/09 19.00     ACH - EFB     1 - 1     1954   
Fre     04/10 19.00     FCN - LBK     1 - 1     3090   
Lor     05/10 16.00     HOB - AaB     0 - 2     2734   
Son     06/10 12.00     EFB - SDR     1 - 2     3718   
Son     06/10 14.00     BIF - FCK     3 - 1     21746  
Son     06/10 14.00     OB - ACH      3 - 0     6442   
Son     06/10 16.00     RFC - AGF     2 - 0     9947   
Son     06/10 18.00     SIF - FCM     1 - 2     4773   
Fre     18/10 19.00     AaB - OB      1 - 0     6086   
Son     20/10 12.00     ACH - HOB     1 - 0     2241   
Son     20/10 14.00     SDR - FCN     1 - 4     4863   
Son     20/10 14.00     AGF - SIF     3 - 4     22175  
Son     20/10 16.00     FCK - EFB     3 - 1     13872  
Son     20/10 18.00     LBK - BIF     0 - 3     8547   
Man     21/10 19.00     FCM - RFC     2 - 1     7410   
Fre     25/10 19.00     EFB - FCM     1 - 2     4637   
Son     27/10 12.00     HOB - SIF     1 - 1     1970   
Son     27/10 14.00     OB - FCN      3 - 1     5915   
Son     27/10 14.00     LBK - ACH     2 - 1     2947   
Son     27/10 16.00     BIF - RFC     5 - 2     17558  
Son     27/10 18.00     SDR - AaB     1 - 3     3843   
Man     28/10 19.00     AGF - FCK     1 - 2     13884  
Fre     01/11 19.00     EFB - ACH     1 - 1     3164   
Son     03/11 12.00     RFC - LBK     2 - 1     2909   
Son     03/11 14.00     OB - HOB      2 - 1     6237   
Son     03/11 14.00     FCN - AGF     0 - 1     3230   
Son     03/11 16.00     AaB - FCM     0 - 1     6305   
Son     03/11 18.00     FCK - SDR     3 - 0     11394  
Man     04/11 19.00     SIF - BIF     0 - 1     5432   
Fre     08/11 19.00     RFC - AaB     3 - 3     4156   
Lor     09/11 16.00     ACH - SIF     2 - 1     1826   
Son     10/11 12.00     HOB - FCN     2 - 2     1733   
Son     10/11 14.00     AGF - SDR     4 - 2     6291   
Son     10/11 14.00     LBK - OB      4 - 3     4046   
Son     10/11 16.00     BIF - EFB     2 - 1     12392  
Son     10/11 18.00     FCM - FCK     4 - 1     11422  
Fre     22/11 19.00     FCN - RFC     3 - 0     1441   
Son     24/11 12.00     SDR - LBK     2 - 2     3712   
Son     24/11 14.00     AaB - ACH     4 - 0     4048   
Son     24/11 14.00     SIF - EFB     1 - 2     2876   
Son     24/11 16.00     FCK - HOB     2 - 1     11512  
Son     24/11 18.00     AGF - BIF     2 - 1     14043  
Man     25/11 19.00     OB - FCM      1 - 2     6392   
Fre     29/11 19.00     LBK - FCN     1 - 1     4419   
Son     01/12 11.45     FCK - BIF     2 - 1     29310  
Son     01/12 12.00     RFC - SDR     3 - 0     2057   
Son     01/12 14.00     ACH - OB      2 - 1     1690   
Son     01/12 16.00     EFB - AGF     1 - 2     4608   
Son     01/12 18.00     AaB - HOB     1 - 1     4520   
Man     02/12 19.00     FCM - SIF     2 - 1     6612   
Fre     06/12 19.00     HOB - ACH     0 - 0     1356   
Son     08/12 12.00     SIF - RFC     2 - 1     1984   
Son     08/12 14.00     SDR - EFB     2 - 1     3623   
Son     08/12 14.00     AGF - LBK     1 - 1     6138   
Son     08/12 16.00     FCN - FCK     0 - 1     5133   
Son     08/12 18.00     BIF - FCM     1 - 2     13317  
Man     09/12 19.00     OB - AaB      0 - 0     5801   
Fre     13/12 19.00     AaB - FCN     1 - 3     3791   
Son     15/12 12.00     ACH - SDR     2 - 1     1261   
Son     15/12 14.00     RFC - EFB     3 - 0     2103   
Son     15/12 14.00     LBK - SIF     1 - 0     2434   
Son     15/12 16.00     BIF - HOB     1 - 1     9703   
Son     15/12 18.00     FCM - AGF     1 - 3     11009
Man     16/12 19.00     FCK - OB      2 - 1     12226
Fre     14/02 19.00     EFB - FCK     1 - 0     5449   
Son     16/02 12.00     SDR - HOB     3 - 1     4316   
Son     16/02 14.00     SIF - AaB     0 - 2     2667   
Son     16/02 18.00     OB - BIF      0 - 2     9576   
Man     17/02 19.00     FCM - LBK     2 - 0     6108
Ons     19/02 18.30     FCN - ACH     6 - 0     1621   
Tor     28/05 19.00     AGF - RFC     1 - 1     0       
Fre     21/02 19.00     HOB - FCM     0 - 2     2071   
Son     23/02 12.00     FCN - SDR     2 - 1     1552   
Son     23/02 14.00     RFC - OB      0 - 0     3103   
Son     23/02 14.00     LBK - EFB     2 - 0     3114   
Son     23/02 16.00     SIF - FCK     1 - 1     3282   
Son     23/02 18.00     AaB - BIF     3 - 2     7896   
Man     24/02 19.00     ACH - AGF     1 - 2     3566   
Fre     28/02 19.00     AGF - HOB     0 - 0     7530   
Lor     29/02 16.00     EFB - FCN     1 - 2     3116   
Son     01/03 12.00     ACH - RFC     1 - 2     1794   
Son     01/03 14.00     OB - SIF      1 - 1     4864   
Son     01/03 16.00     BIF - LBK     1 - 0     16388  
Son     01/03 18.00     FCK - AaB     3 - 2     13240  
Man     02/03 19.00     FCM - SDR     3 - 0     8103   
Son     08/03 12.00     HOB - EFB     1 - 1     0       
Son     08/03 14.00     SDR - OB      1 - 1     0       
Son     08/03 14.00     AaB - LBK     3 - 0     0       
Son     08/03 16.00     FCK - ACH     0 - 1     0       
Son     08/03 18.00     FCN - BIF     2 - 2     0       
Son     08/03 20.00     RFC - FCM     0 - 2     0       
Man     09/03 19.00     SIF - AGF     2 - 1     0       
Fre     29/05 19.00     SIF - FCN     0 - 2     0       
Son     31/05 18.00     EFB - AaB     1 - 1     0       
Man     01/06 14.00     RFC - HOB     0 - 1     0       
Man     01/06 16.00     FCM - ACH     0 - 1     0       
Man     01/06 18.00     LBK - FCK     1 - 4     0       
Man     01/06 20.00     AGF - OB      1 - 0     0       
Tir     02/06 19.00     BIF - SDR     1 - 0     0       
Son     07/06 17.00     FCK - RFC     2 - 1     0       
Son     07/06 17.00     SDR - SIF     2 - 2     0       
Son     07/06 17.00     AaB - AGF     2 - 3     0       
Son     07/06 17.00     OB - EFB      3 - 1     0       
Son     07/06 17.00     ACH - BIF     3 - 2     0       
Son     07/06 17.00     FCN - FCM     0 - 1     0       
Son     07/06 17.00     HOB - LBK     2 - 2     0     

这是我迄今为止的代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NUMOFTEAMS 14
typedef struct match
{
char day_name[4];
int day;
int month;
float hour;
char team_1[4];
char team_2[4];
int team_1_goal;
int team_2_goal;
int viewer;
} match;
typedef struct team
{
char* team_names;
int goals_scored;
int goal_conceded;
int points;
} team;

int
main()
{
FILE *fp;
fp = fopen("kampe-2019-2020.txt", "r");
char str[255];
while(fgets(str, 255, fp) != NULL) {
printf("%s", str);
}
if(fp == NULL){
printf("File not found...n");
exit(EXIT_FAILURE);
}}

所以我创建了2个struct和fopen来打开文本文件并打印它。我的问题是

  1. 当我用fopen和fget打开文件时,如何将信息存储到structteam和structmatch
  2. 在我完成了这项任务之后,我如何编写一个函数来对团队数组进行排序

如果有人能在Discord上帮助我,我将不胜感激,因为我对C很陌生,任务对我来说太难了

如何将信息存储到structteam和structmatch?

有多种选择,但请考虑:

  1. 在读入str的行中使用sscanf()函数
  2. 不使用fgets()'ing,而是直接对输入文件使用fscanf()进行扫描

您需要将结构的字段地址传递给这些函数。

如何编写一个函数来对团队数组进行排序?

我不会为你做家庭作业,但是-想想你会如何手工完成。忘记编程C吧。我给你的是比赛结果表,你需要把这些信息汇总到一个团队统计表中。如果没有电脑,你会怎么做。。。现在尝试这样做,但在C.

最新更新