Comment restreindre un utilisateur pour qu’il ne puisse pas entrer un 0 dans c

J’ai la fonction suivante pour filtrer les valeurs entières et rediffuser l’utilisateur.

int checkInput0(void){ int option0,check0; char c; do{ printf("Enter the amount of sortingangles you want to check: \n"); if(scanf("%d%c",&option0,&c) == 0 || c != '\n'){ while((check0 = getchar()) != 0 && check0 != '\n' && check0 != EOF); printf("[ERR] Invalid number of sortingangles.\n"); }else{ break; } }while(1); // printf("returning the value of option, which is %f", option); return option0; 

Cependant, je voudrais étendre cette fonction au filtre 0 également.

Il me semble manquer quelque chose. Toute aide sera grandement appréciée.

Merci d’avance!

le code publié ne vérifie pas correctement la valeur renvoyée par ‘scanf ()’ et n’exécute pas tout à fait la fonctionnalité souhaitée.

Le code proposé suivant:

  1. clarifie la logique
  2. vérifie correctement les erreurs d’E / S
  3. élimine une entrée invalide
  4. quitte le programme en cas d’échec de l’entrée / sortie
  5. sépare la saisie de données du vidage de ‘stdin’

et maintenant le code proposé:

 do { printf("Enter the amount of sortingangles you want to check: \n"); if( scanf( "%d", &option0 ) == 1 ) { if( 0 >= option0 ) { // 0 or negative value entered printf("[ERR] Invalid number of sortingangles.\n"); continue; } // empty stdin while( (check0 = getchar()) != EOF && check0 != '\n' ); // exit while() loop break; } else { // scanf failed perror( "scanf for number of sortingangles failed" ); exit( EXIT_FAILURE ); } } while(1);