Salve a tutti,
Ho un problema con questo programma.
Praticamente la riga
if ((strcmp(team2[i].ruolo, team2[q].ruolo))==0)
non mi funziona, anche se sono effettivamente identici. Non so proprio cosa fare.
Per esempio, se il ruolo è 'D' per entrambi, mi restituisce -1.

codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 50
#define TRUE 1
#define FALSE 0

int main()
{
    FILE* f1;
    FILE* f2;
    int i, q, n1, n2, stato, sostituzioni1=0, sostituzioni2=0, giocatori=1;
    float punteggio1=0.0, punteggio2=0.0;

    typedef struct
    {
        char nome[N];
        char ruolo[1];
        char voto[10];
    } squadra;
    squadra team1[18];
    squadra team2[18];

    if ((f1=fopen("formazione1.txt", "r"))==NULL)
    {
        printf("ERRORE APERTURA FILE: formazione1.txt\n");
        return EXIT_FAILURE;
    }
    if ((f2=fopen("formazione2.txt", "r"))==NULL)
    {
        printf("ERRORE APERTURA FILE: formazione2.txt\n");
        return EXIT_FAILURE;
    }

    for (i=0, stato=fscanf(f1, "%s %s", team1[i].nome, team1[i].ruolo); stato!=EOF && i<N; i++, stato=fscanf(f1, "%s %s", team1[i].nome, team1[i].ruolo));
    n1=i;

    for (i=0, stato=fscanf(f2, "%s %s", team2[i].nome, team2[i].ruolo); stato!=EOF && i<N; i++, stato=fscanf(f2, "%s %s", team2[i].nome, team2[i].ruolo));
    n2=i;
    fclose(f1);
    fclose(f2);

    //assegnazioni voti squadra2
    printf("FORMAZIONE 1\nInserire i voti dei giocatori richiesti\n");
    for (i=0; i<n1; i++)
    {
        printf("%s : ", team1[i].nome);
        scanf("%s", team1[i].voto);
    }

    //assegnazioni voti squadra2
    printf("FORMAZIONE 2\nInserire i voti dei giocatori richiesti\n");
    for (i=0; i<n2; i++)
    {
        printf("%s : ", team2[i].nome);
        scanf("%s", team2[i].voto);
    }
    int trovato=FALSE;
    //calcolo punteggi squadra1
    i=0;
    giocatori=1;
    while (giocatori<12 && i<11)
    {
        if (strcmp(team1[i].voto, "x")==0)
        {
            trovato=FALSE;
            if (sostituzioni1<4)
            {
                for (q=11; q<n2 && !trovato;q++)
                {
                    if (strcmp(team1[i].ruolo, team1[q].ruolo)==0)
                    {
                        strcpy(team1[i].voto, team1[q].voto);
                        trovato=TRUE;
                        sostituzioni1++;
                    }
                    else strcpy(team1[i].voto, "0");
                }
            }
            else strcpy(team1[i].voto, "0");
        }
        giocatori++;
        i++;
    }

    //calcolo punteggi squadra2
    i=0;
    giocatori=1;
    while (giocatori<12 && i<11)
    {
        if (strcmp(team2[i].voto, "x")==0)
        {
            trovato=FALSE;
            if (sostituzioni2<4)
            {
                for (q=11; q<n2 && !trovato;q++)
                {
                    if ((strcmp(team2[i].ruolo, team2[q].ruolo))==0)
                    {
                        strcpy(team2[i].voto, team2[q].voto);
                        trovato=TRUE;
                        sostituzioni2++;
                    }
                    else strcpy(team2[i].voto, "0");
                }
            }
            else strcpy(team2[i].voto, "0");
        }
        giocatori++;
        i++;
    }

    for (i=0; i<11; i++)
        punteggio1+=atof(team1[i].voto);
    printf("PUNTEGGIO SQUADRA 1 : %.1f\n", punteggio1);

    for (i=0; i<11; i++)
        punteggio2+=atof(team2[i].voto);
    printf("PUNTEGGIO SQUADRA 2 : %.1f", punteggio2);


    return 0;
}