#include<stdio.h>
int valeur()
{
int v=-2;
while( !( v>=0 && v<10) )
{
printf("\n Entrer v -> ");
scanf("%d",&v);
}
return v;
}
int main()
{
int v;
v=valeur();
printf("v-> %d\n", v);
return 0;
}
Bonjour,
Mon programme à pour objectif d'enregister un entier entre 0 et 10, 10 exlcu.
Lorsque je rentre un entier tout se passe bien mais si j'ai le malheur de taper un caractère le programme se met à boucler sans poser d'arrêt sur le scanf.
Merci d'avance pour vos remarques.
PS: je programme sous ubuntu.
__________________________
Loin de moi ce manichéïsme du choix épicurien face à la vie...
Je fais plus de C depuis un bail... mais bon... ce que je ferais pour pouvoir identifier clairement le problème, j'enlèverai la boucle while et afficherait le résultat tapé... Tu tapes alors un caractère et tu essaies de voir à quoi çà ressemble tu pourras alors faire un test et savoir quelles types de valeurs rejeter en plus...
Sinon, plus simple je trouve... Tu enregistre un caractère et tu vérifies que c'est bien un entier qui a été tapé... Ca me parait être une meilleur solution... Moins de risques de boggues...
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.
La meilleur technique serais de lire un charactere, l'enregistrer dans un char ou un BYTE, puis regarder si le char est entre 48 et 57(nb de 0 a 9). Si oui, pas de pb, sinon on recommence, voila.
Vortex dit : La meilleur technique serais de lire un charactere, l'enregistrer dans un char ou un BYTE, puis regarder si le char est entre 48 et 57(nb de 0 a 9). Si oui, pas de pb, sinon on recommence, voila.
Je l'avais dis juste au dessus
__________________________
............ Curtis: RTS 3D .............. ......
........... TeamMoteurProg...........
pas de problème xD
Alors Marthyi ? t'en est où ?
__________________________
............ Curtis: RTS 3D .............. ......
........... TeamMoteurProg...........
Salut, merci de vos réponses.
Ce problème était en réalité un détail dans un projet de C pour mon école. J'ai entendu aussi parler de vider le buffer du clavier mais ni moi ni mes camarades non réussi à mettre cela en place...
Je stoppe pour le moments mes recherche sur ce problème mais dans l'absolu l'analyse par caratère et la plus robuste.
encore merci pour votre aide.
__________________________
Loin de moi ce manichéïsme du choix épicurien face à la vie...