【发布时间】:2020-11-29 20:16:48
【问题描述】:
一个必须是简单的问题,但我无法做到。
我必须在结构上扫描一个包含以下格式条目的文本文件: {"data1","data2",number1,number2}
然后计算首先填充一个结构。
练习文本: 考虑以下结构的定义
typedef struct {
char teamHome [30];
char teamHost [30];
int goalSquadraHome;
int goalSquadraOspite;
} match;
用于表示足球比赛的结果。 编写一个函数,将游戏数组及其大小 e 作为参数 返回包含以下信息的结果结构: 主队赢得的比赛场数, 客队获胜的场次, 关系的数量, 在一场比赛中进球最多的球队的名字。 然后编写一个程序,给定包含所有 380 场 2019/2020 赛季意甲比赛的数组, 打印结果中包含的信息。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char squadraCasa[30];
char squadraOspite[30];
int golSquadraCasa;
int golSquadraOspite;
} partita;
typedef struct {
int partite_casa;
int partite_ospite;
int pareggi;
char squad_magg_num_goal[30];
} risultato;
int main(){
FILE *fp;
risultato risultati;
int maxgoal = 0;
risultati.partite_casa = 0;
risultati.partite_ospite = 0;
risultati.pareggi = 0;
partita partite[380];
int i=0;
if((fp = fopen("partiteSerieA1920.txt","rt"))==NULL){
printf("Errore nell'apertura del file\n");
exit(1);
}
while(!feof(fp)){
fscanf(fp,"{\"%s\",\"%s\",%d,%d",partite[i].squadraCasa,partite[i].squadraOspite,partite[i].golSquadraCasa,partite[i].golSquadraOspite);
i++;
}
for(i=0;i<380;i++){
if(partite[i].golSquadraCasa>partite[i].golSquadraOspite){
risultati.partite_casa++;
}else if(partite[i].golSquadraCasa<partite[i].golSquadraOspite){
risultati.partite_ospite++;
}else
risultati.pareggi++;
if(partite[i].golSquadraCasa>maxgoal){
strncpy(partite[i].squadraCasa,risultati.squad_magg_num_goal,30);
maxgoal = partite[i].golSquadraCasa;
}
if(partite[i].golSquadraOspite>maxgoal){
strncpy(partite[i].squadraOspite, risultati.squad_magg_num_goal,30);
maxgoal = partite[i].golSquadraOspite;
}
}
fclose(fp);
printf("%d %d %d %s\n",risultati.partite_casa,risultati.partite_ospite,&risultati.pareggi,&risultati.squad_magg_num_goal);
return 0;
}
请告诉我如何正确安排。
【问题讨论】:
-
请描述您面临的具体问题或错误。代码的预期行为与实际行为是什么?一个问题:在
fscanf中,您需要将&用于int字段:&partite[i].golSquadraCasa, &partite[i].golSquadraOspite -
您的帖子中没有问题。问一个具体的问题。
-
你能告诉我一些正确的而不是这个吗:{\"%s\",\"%s\",%d,%d?谢谢
-
请注意,
typedef struct {} foo实际上并没有定义结构。它为匿名结构定义了一个 typedef。 IMO,您应该通过删除所有 typedef 来简化代码。 -
您错误地使用了
feof:stackoverflow.com/questions/5431941/…
标签: c