Controle saisie

Fermé
azerty1705 Messages postés 11 Date d'inscription dimanche 13 décembre 2015 Statut Membre Dernière intervention 9 décembre 2016 - Modifié par azerty1705 le 15/12/2015 à 14:31
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 15 déc. 2015 à 21:48
Bonjour;
J'ai un problème lorsque que je tape une lettre le programme plante et j'aimerais qu'il me marque qu'il y a une erreur au lieux de planter et je ne sait pas du tous comment faire
merci d'avance;


#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include "ModeAssisterFR.h"
#include "ModeAssisterEN.h"
#include "ExpertMode.h"
#include "ExpertModeEN.h"

int main(void)
{
system("clear");

int c;
int a;
int b;


printf(" ---------------------------------------------------------------\n");
printf(" | |\n");
printf(" | BIENVENUE / WELCOME :) |\n");
printf(" | EXIA_SHELL_2.0 |\n");
printf(" | |\n");
printf(" ---------------------------------------------------------------\n");

do {
//Choix langage
printf("\n\033[32mMenu langage / language menu\033[00m\n");
printf ("\n1) Francais taper 1\n");
printf ("2) English type 2\n");
printf ("3) Quitter / exit \n");
printf ("Votre choix : ");

scanf ("%i", &c);
if (c <= 0 || c >= 4)

{
system("clear");
printf ("\n\033[31mLa saisie est invalide.\n\n\033[34mRecommencer! / Try again!\033[00m\n");
}
}

while (c <= 0 || c >= 4);
//Verification choix
if(c == 1)//1ere option francais
//Choix langue Française
//Choix mode
{



printf("\n Votre choix de langue est le Francais\n");

while(a <= 0 || a >=4)
{

printf("\n\033[32mChoix du mode\033[0m\n");
printf("\n1) Mode expert taper 1\n");
printf("2) Mode assister taper 2\n");
printf("3) Mode langage naturel taper 3\n");
printf("\nVotre choix : ");

scanf ("%i", &a);
//rentrer choix
if (a <= 0 || a >= 4)
{
system("clear");
printf("\n\033[31mLa saisie est invalide.\n\n\033[34mRecommencer!\033[00m\n");


}

if (a == 1)
{
printf("\n \033[32mVous avez choisis le mode expert\033[0m\n");
system("clear");
Expert();
}
else if(a == 2)
{
printf("\n \033[32mVous avez choisis le mode assister\033[0m\n");
system("clear");
ChoixFamilleFR();


}
else if(a == 3)
{
printf("\n \033[32mVous avez choisis le mode language naturel\033[0m\n");
}


}



}



if(c == 2)//2eme option anglais
{
//choix langue anglais
//choix mode
printf("\n Your language choice is English\n");

while(b <= 0 || b >=4)
{

printf("\n\033[32mChoice mode\033[0m\n");
printf("\n1) Expert Mode type 1\n");
printf("2) Assisted mode type 2\n");
printf("3) Natural language type 3\n");
printf("\nYour choice : ");

scanf ("%i", &b);
//rentrer choix
if (b <= 0 || b >= 4)
{
printf("\n\033[31mThe entry is invalid.\n\n\033[34mTry again!\033[00m\n");
}
if (b == 1)
{
printf("\n \033[32mYour choice mode is expert\033[0m\n");
system("clear");
ExpertEN();

}
else if(b == 2)
{
printf("\n \033[32mYour choice mode is assisted\033[0m\n");
system("clear");
ChoixFamilleEN();
}
else if(b == 3)
{
printf("\n \033[32mYour choice mode is natural language\033[0m\n");
}

}

}
if(c == 3) //3eme option quitter
{
system("clear");
printf("Programme fermer / Programme close\n");
}

}
A voir également:

2 réponses

Timmydu26 Messages postés 80 Date d'inscription mercredi 29 avril 2015 Statut Membre Dernière intervention 17 juin 2016 30
15 déc. 2015 à 14:38
Je peut me tromper mais il me semble que tu ne peut pas comparer directement la valeur du caratere avec 4 ou une lettre h par exemple. Il faut comparer sauf erreur les valeurs des carateres en ASCII.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
15 déc. 2015 à 21:48
Bonjour,

Si tu veux éviter que ton programme plante, il faut rendre ton programme plus robuste. Donc commencer par éviter les scanf(), etc. Bref, ça demande un certain niveau... Mais déjà, il faudrait plutôt revoir la structure de ton programme pour l'optimiser et le rendre plus agréable à lire (notamment via l'ajout de fonctions).

Quelques erreurs :
while(a <= 0 || a >=4)
{

Attention, ta variable n'est pas initialisée au moment où tu l'utilises...

De même pour ta variable b.
Et il manque le return 0; final.

Pour le reste, dis-nous à quel moment ton programme plante au moins.
0