Bug avec un programme en C !

Fermé
jittou Messages postés 14 Date d'inscription vendredi 12 octobre 2007 Statut Membre Dernière intervention 3 décembre 2007 - 1 nov. 2007 à 15:33
jittou Messages postés 14 Date d'inscription vendredi 12 octobre 2007 Statut Membre Dernière intervention 3 décembre 2007 - 1 nov. 2007 à 23:42
Salut a tout le monde,
bon voila jai terminer un programme qui calcul les notes !
jai mis ttes les exceptions possible mais il me reste une c'est de permettre a lutilisateur decrire que des nombres.
ex:
printf("veuillez saisir la note : ");
cin>>note;
quand j'écris 1 ou 2 ou 3..... ça marche très bien
mais jecris : kjbeju(des caractères) ça se plante !!
comment permettre a lutilisateur decrire seulement des nombres??
merçii davance :)
A voir également:

2 réponses

mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
1 nov. 2007 à 16:23
Voici comment tu peux faire
#include <cstdio>
#include <iostream>
#include <string>

int get_int(){
    int x;
    int ret;
    do{
        std::cout << "saisissez un entier" << std::endl;
        std::string s;
        std::cin >> s;
        ret = sscanf(s.c_str(),"%d",&x);
    }while(ret != 1);
    return x;
}


int main(){
    int x = get_int();
    std::cout << "x = " << x << std::endl;
    return 0;
}

Ce qui donne à l'exécution :
saisissez un entier
tapir
saisissez un entier
89
x = 89

Note : dès que scanf va trouver un entier il va l'extraire même si tu mets une chaîne devant ou derrière.
saisissez un entier
plop 45 67 tapir
saisissez un entier
x = 45
Pour plus d'infos cf la doc de sscanf.
http://www.linux-france.org/article/man-fr/man3/scanf-3.html

La vraie solution consisterait à vérifier que la saisie match bien avec l'expression régulière associée aux entiers, par exemple en utilisant la lib pcre. Mais en C ou C++ pur ce risque d'être un peu plus compliquer à vérifier.

Bonne chance
0
jittou Messages postés 14 Date d'inscription vendredi 12 octobre 2007 Statut Membre Dernière intervention 3 décembre 2007
1 nov. 2007 à 23:42
Salut mamiemando
1eremen j vous remerçi de votre aide
jai essayé ton programme il a voulu se compilé
jai essayé de comprendre tes instruction jnai rien compri :s
esque je peu avoir une explication si cest possible !! merçiii
0