Code:int addcountry(struct medals *as, char *name){ as->country = malloc(strlen(name)+1); if(strcpy(as->country, name) == NULL){ return 0; } as->gold = 0; as->silver = 0; as->bronze = 0; return 1; } void updatemedals(struct medals *as, int size, char *name, int first, int second, int third){ int i; for(i = 0; i < size; i++){ if(strcmp(as[i].country,name)==0){ as[i].gold += first; as[i].silver += second; as[i].bronze += third; } else{continue;} } } void printtable(struct medals *as){ printf("%s %d %d %d\n",as->country, as->gold, as->silver, as->bronze); } int main(){ struct medals a1; char arrays[20]; char *info = arrays; char list[1028]; int g, s, b; int size = 0; printf("Enter country and medals"); char firstletter; while(scanf(" %s", list) > 0){ if(list[0] == 'A'){ sscanf(list, "%s, %s", &firstletter, info); addcountry(&a1, info); size++; } else if(list[0] == 'M'){ sscanf(list, "%s, %s, %d, %d, %d", &firstletter, info, &g, &s, &b); updatemedals(&a1, size, info, g, s, b); } else if(list[0] == 'L'){ printtable(&a1); } } return 0; }
Im doing program that calculates countries medals. First input is for example 'A Canada' which creates new field. And second input is for example 'Canada 1 1 2'. I have probably some mistakes here and I cant find them. My main function is pretty messy so if someone could give some help how to fix main function it would be great.