Salve a tutti.
Ho compilato la seguente parte di codice e andando a testare mi va in crash quando inserisco un carattere invece di un numero, insomma quando il carattere immesso è diverso da un numero.
codice:
#include<stdio.h>

int login(){
	int indice;
	printf("Scegli un azione inserendo il numero corrispondente\n");
    printf("*********************************************************\n");
    printf("1. Accesso con autenticazione\n");
    printf("2. Accesso senza autenticazione\n");
    printf("0. Uscita\n");
    printf("*********************************************************\n");
    scanf("%d",&indice);
    switch (indice){
    	case 0: /*Usicta dal login*/
    	printf("\n\nArrivederci!\n\n");
    	break;
    
    	case 1:/*Accesso con autenticazione*/
   		printf("Accesso con autenticazione!\n");
   	 	break;
    
    	case 2:/*Accesso senza autenticazione*/
   	 	printf("Accesso senza autenticazione!\n");
    	break;
    
    	default://Riaccede al login per autenticazione errata
    	printf("\n\nHai inserito un indice inesistente, riprova!\n\n");
    	login();
    	break;
   	}
   	return 0;	
}

int main (void){
	login();
	return 0;
}
Se metto tutto lo switch nel main tutto ok nel senso che se inserisco un carattere o numero o quel che sia fa entrare in azione il default e quindi non succede niente.
Se invece compilo il codice come sopra e inserisco un carattere mi parte all'infinito lo switch e sono costretto ad interrompere.
C'è un modo per far si che all'immissione da tastiera faccio controllare al computer che quello inserito sia effettivamente un numero e non un carattere?
E' l'unica soluzione che mi sia venuta in testa.