Creo que el contador te da un valor elevado no? si es asi, es porque estas contando todos los participantes de un mismo pais, me explico:
Son 5 festivales en total, y tienes 2 participantes en cada festival (y quieres comprobar "españa"):
festival 1
españa
francia
festival 2
españa
alemania
festival 3
españa
españa
festival 4
francia
españa
festival 5
españa
holanda
Lo que estás haciendo en esos bucles, es comparar el pais de todos los participantes de un festival, y si el país coincide es que el país estuvo en el festival, el problema es que no controlas que pueden haber varios participantes del mismo pais en el mismo festival.. el conteo en éste caso te daría 6, y realmente debería ser 5 por el número de festivales.
Solución que te propongo, es el uso de un switch, en el momento que el país de un concursante coincida con el país que quieres comprobar que estuvo en el festival, pues que cambie al siguiente festival, por ejemplo:
Código:
for(i=1;i<=60;i++){
j=1;
for(j=1;j<=50;j++){
if((misFestivales.historia[i].concursante[j].pais) == pais ){
contador=contador+1;
j=51; //obligas a cambiar al siguiente festival
}
}
i=i+1;
}
Otra cosa si mal no recuerdo y porsia no lo conoces aun, para que un char sea una cadena de caracteres tendría que ser un array:
char pais[10] = "españa";
y para comparar cadenas (#include <string.h>):
int x = strcmpi(cadena1,cadena2);
//devuelve un entero, si devuelve '0' es que son iguales
if(x==0) printf("Son iguales");
En tu caso seria:
x = strcmpi(misFestivales.historia[i].concursante[j].pais,pais);
if(x==0){
contador=contador+1;
j=51;
}
Y... si esta algo mal pues lo siento, tendría que revisar una que otra cosa en C, ya que he cambiado chip a java y .net xD.. Suerte.