Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
commande scanf sous C
Envoyé par: oliv

Sur l'instruction "scanf("%d",&unit);" je voudrais faire une detection sur la saisie d'une valeur autre que numerique. Si par exemple on saisie un caractaire je veux pouvoir le detecter.

Merci

Il n'y a de dieu que DIEU, et Mouhammed est le messager de DIEU.

Poste le Monday 13 June 2005 20:55:43
Répondre     Citer    
Re: commande scanf sous C
Envoyé par: ndeye

pour un seul caractere scanf("%c",&unit)
une chaine de caratere scanf("%s",&unit)

Poste le Monday 13 June 2005 21:07:50
Répondre     Citer    
Re: commande scanf sous C
Envoyé par: madko

parait que c'est mal scanf, on nous l'interdisait en cours ?-(

Poste le Monday 13 June 2005 23:24:18
Répondre     Citer    
Re: commande scanf sous C
Envoyé par: abgech

Citation
madko
parait que c'est mal scanf, on nous l'interdisait
en cours
Mal, on ne dira pas ça. Mais assez délicat à utiliser, surtout en cas d'erreur de frappe.
La meilleure solution, amha, serait d'utiliser fgets pour lire une chaîne de caractères et de décoder "manuellement" la chaîne lue avec des fonctions telles que atoi(), strtod(), strtol(), etc.

..................
Parce qu'il avait une clôture à utiliser, l'homme invente la propriété privée. --- F. Cavanna

Poste le Tuesday 14 June 2005 07:12:16
Répondre     Citer    
Re: commande scanf sous C
Envoyé par: oliv

Je desir detecter une erreur de frappe car malgre la definition "%d" il est toujours possible de saisir un caractaire et cela plante mon programme.

Il n'y a de dieu que DIEU, et Mouhammed est le messager de DIEU.

Poste le Tuesday 14 June 2005 08:50:55
Répondre     Citer    
Re: commande scanf sous C
Envoyé par: Sve@r

Pour répondre à ndeye, si on saisit une chaîne, on ne met pas de "&" devant la variable parce que cette variable est déjà, en elle-même, une adresse => scanf("%s", unit)

Pour répondre à madko, scanf n'est pas "mal" quand on l'utilise pour soi. Mais si on veut faire un programme à l'épreuve des neuneu qui tapent une lettre quand on leur demande un chiffre, scanf est difficile à bien mettre en oeuvre

Pour répondre à oliv, tu as un moyen très élégant de gérer ton pb comme l'a suggéré abgech
1) tu fais saisir une chaîne avec "fgets"
2) tu parses ta chaîne dans ta variable avec "sscanf"

char saisie[1024];
int unit;
fgets(saisie, 1024, stdin);
sscanf(saisie, "%d", &unit);



Poste le Tuesday 14 June 2005 09:21:36
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
commande scanf sous C
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons