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
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
A voir également:
- Bug avec un programme en C !
- Bug yahoo mail - Accueil - Mail
- Programme demarrage windows 10 - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme - Guide
- Forcer la fermeture d'un programme - Guide
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
1 nov. 2007 à 16:23
Voici comment tu peux faire
Ce qui donne à l'exécution :
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.
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
#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 = 45Pour 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
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
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
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