Si lo sapevo, ma pensavo che essendo una char ed una char essendo una stringa punta all'indirizzo del suo primo elemento.
comunque facendo cosi non mi gira il programma, il file è strutturato cosi:
nome_squadra, codice goal_fatti goal_subiti
es: juventus, 1 7 8
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define NMAX 10
struct squadra
{
char nome[20];
int codice;
int goal_fatti;
int goal_subiti;
};
struct squadra leggi_squadre(char filesquadre[], char codice[]);
void aggiorna_elenco(struct squadra s[], char nome[], int cod, int goal_fatti, int goal_subiti, int *nsquadre);
struct squadra trova_squadra(struct squadra s[], char codice[], int nsquadre);
int main(int argc, char *argv[])
{
struct squadra s;
if(argc != 3)
{
printf("Inserisci: <filesquadre> <CODICE>");
exit(EXIT_FAILURE);
}
s = leggi_squadre(argv[1], argv[2]);
printf("\n------------------------------------------------------\n");
printf("Squadra goal fatti goal subiti\n");
printf("%3s %11d %13d", s.nome, s.goal_fatti, s.goal_subiti);
return EXIT_SUCCESS;
}
struct squadra leggi_squadre(char filesquadre[], char codice[])
{
FILE *fp;
struct squadra s[NMAX], squadra_cercata;
char nome[20], virgola;
int cod, goal_fatti, goal_subiti;
int nsquadre=0;
if((fp = fopen(filesquadre, "r")) == NULL)
{
printf("Errore apertura del file!!!");
exit(EXIT_FAILURE);
}
printf("Le squadre con la differenza reti positiva: \n");
printf("Squadra codice");
while(fscanf(fp, "%s %19[^,]%c %d %d %d", nome, &virgola, &cod, &goal_fatti, &goal_subiti ) != EOF)
{
aggiorna_elenco(s, nome, cod, goal_fatti, goal_subiti, &nsquadre);
}
squadra_cercata = trova_squadra(s, codice, nsquadre);
return squadra_cercata;
}
void aggiorna_elenco(struct squadra s[], char nome[], int cod, int goal_fatti, int goal_subiti, int *nsquadre)
{
strcpy(s[*nsquadre].nome, nome);
s[*nsquadre].codice = cod;
s[*nsquadre].goal_fatti = goal_fatti;
s[*nsquadre].goal_subiti = goal_subiti;
if(s[*nsquadre].goal_fatti > s[*nsquadre].goal_subiti)
{
printf("\n%s %9d", s[*nsquadre].nome, s[*nsquadre].codice);
}
(*nsquadre)++;
return;
}
struct squadra trova_squadra(struct squadra s[], char codice[], int nsquadre)
{
struct squadra c;
int i;
for(i=0; i<nsquadre; i++)
{
if(s[i].codice == atoi(codice))
{
c = s[i];
}
}
return c;
}