Ciao.
Ho questo dubbio: dovendo scrivere un programma nel quale si chiede all'utente di inserire un intero, corrispondente ad una certa operazione, ho inizialmente scritto una struttura di questo tipo:
codice:
#import <stdio.h>
int main(){
int i = 0;
while(i!=4){
printf("Inserisci un intero da 1 a 3, 4 per uscire\n");
scanf("%d", &i);
switch(i){
case 1:
printf("Caso 1\n");
break;
case 2:
printf("Caso 2\n");
break;
case 3:
printf("Caso 3\n");
break;
case 4:
break;
default:
printf("Operazione non valida!\n");
break;
}
}
return 0;
}
Ho notato però che, inserendo un carattere (non un numero intero per intenderci), si verifica un comportamento in desiderato: il programma entra in loop e esegue continuamente le printf di "Inserisci un intero da 1 a 4" e "Operazione non valida!".
Avrei risolto usando una struttura completamente differente:
codice:
#import <stdio.h>
#import <string.h>
int main(){
char input[3];
while(strcmp(input, "4")!=0){
printf("Inserisci un intero da 1 a 3, 4 per uscire\n");
scanf("%s", input);
if(strcmp(input, "1")==0){
printf("Caso 1\n");
} else if(strcmp(input, "2")==0){
printf("Caso 2\n");
} else if(strcmp(input, "3")==0){
printf("Caso 3\n");
} else if(strcmp(input, "4")!=0){
printf("Operazione non valida!\n");
}
}
return 0;
}
Mi chiedo però se sia corretto agire in questo modo. Non c'è una soluzione differente che mi consenta di usare uno switch con gli interi senza dover utilizzare if e char?
Grazie,