为什么“ atoi”是必要的?

时间:2019-07-22 22:10:25

标签: c

我不明白为什么在“ 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;

0 个答案:

没有答案