Я сравниваю строку, взятую при вводе обычным scanf, со строкой в структуре. Это структура:
typedef struct{ // Tipo giocatore e i suoi dati
int id;
char * nome;
char * cognome; //<--------- this one (it means surname)
int eta;
char * ruolo;
squadra team;
char * college;
int td;
} giocatore;
И это код, который работает и не работает (?.?). Я не знаю, почему иногда это работает, а иногда нет, потому что это второй случай коммутатора, который имеет тот же код, что и первый, но со словом «имя» вместо «фамилия». Помните, что первый случай работает каждый раз, второй - выбор (смеется), а последний (третий) содержит первую проблему, которую я объяснил ранее.
size_t ricerca(short int tipo, size_t sz, giocatore array[]){
size_t count = 0;
char cerca;
switch(tipo){
case 1:
printf ("Inserisci il nome da cercare: ");
scanf ("%s", &cerca);
for (size_t i = 0; i < sz; ++i){
if (strcmp(array[i].nome, &cerca) == 0){
printf("ID:%d Nome:'%s' Cognome:'%s' Eta:%d Ruolo:'%s' Team:'%s' College:'%s'\n",
array[i].id,
array[i].nome,
array[i].cognome,
array[i].eta,
array[i].ruolo,
array[i].team.nome,
array[i].college);
count++;
}
}
break;
case 2:
printf ("Inserisci il cognome da cercare: ");
scanf ("%s", &cerca);
for (size_t i = 0; i < sz; ++i){
if (strcmp(array[i].cognome, &cerca) == 0){
printf("ID:%d Nome:'%s' Cognome:'%s' Eta:%d Ruolo:'%s' Team:'%s' College:'%s'\n",
array[i].id,
array[i].nome,
array[i].cognome,
array[i].eta,
array[i].ruolo,
array[i].team.nome,
array[i].college);
count++;
}
}
break;
case 3:
goto Cleanup;
Cleanup: ;
char nomesq[30];
printf ("Inserisci il nome della squadra da cercare: ");
scanf("%[^\n]%*c", nomesq);
for (size_t i = 0; i < sz; ++i){
if (strcmp(array[i].team.nome, nomesq) == 0){
printf("ID:%d Nome:'%s' Cognome:'%s' Eta:%d Ruolo:'%s' Team:'%s' College:'%s'\n",
array[i].id,
array[i].nome,
array[i].cognome,
array[i].eta,
array[i].ruolo,
array[i].team.nome,
array[i].college);
count += 1;
}
}
break;
default:
printf("Inserisci un valore valido\n;");
break;
}
return count;
}
Заранее благодарим за ваше терпение и Ваша помощь и извините за мой английский sh:)