我不明白为什么在“ comando”上使用scanf
时程序会同时给我“ inserisci nome”和“ inscerisci telefono”;相反,如果我使用“ gets(righe)”,并且在“ comando = atoi(righe)”之后,程序会给我“ inserisci nome”等待答案,然后给我“ inserisci telefono”。为什么scanf
也不能正常工作?
const int maxn = 40;
const int maxt = 20;
const int max = 100;
char nome[max][maxn];
char tel[max][maxt];
int i, j;
int comando;
char sn[maxn];
char st[maxt];
int N; // voci in rubrica
int duplicato, trovato, pos;
char righe[200];
N = 0;
do{
printf("1) Aggiungi nuova voce in rubrica\n"
"2) Ricerca esatta per nome\n"
"3) Ricerca approssimata per nome\n"
"4) Stampa completa rubrica\n"
"0) Esci dal programma\n");
printf("Inserisci comando: ");
gets(righe);
comando = atoi(righe);
switch(comando){
case 1:
printf("Inserisci nome: ");
gets(sn);
printf("Inserisci numero di telefono: ");
gets(st);
if(N > max){
printf("Ci sono troppi numeri in rubrica");
break;
}
duplicato = 0;
for(i = 0; i < N; i++){
if(strcmp(sn, nome[i]) == 0){
duplicato = 1;
}
}
if(duplicato == 1){
printf("Errore! Nome gia' presente in rubrica\n");
break;
}
strcpy(nome[N], sn);
strcpy(tel[N], st);
N++;
break;