[Programmation C]-sécurisation d'un champ

Omar -  
 chouchen -
[programmation c]-sécurisation d'un champ?


BOnjour,
je réalise un petit projet de calculatrice en binaire où je voudrais forcer l'utilisateur a n'entrer que des entiers pour les calculs.

Logiciel: Dev cpp
OS: win xp

Donc s'il entre 25.5, le programme devrait refuser cette entrée.

J'ai bien essayer ceci:
<code
int test;
float saisie;
scanf("%f",&saisie);
test=saisie;

//exemple: 25.5-25=0.5 !=0 ---> na pas entré un ENTIER
if (saisie-test!=0) printf("entre un entier")



Mais ce la ne fonctionne pas.

Auriez vous une idée pour interdire la saisie de réels , seuls les entiers étant acceptés.

Merci d'avance a TOUS :D

Omar.

5 réponses

Utilisateur anonyme
 
salut

pourquoi ne fais-tu pas un %d (entier) au lieu d'un %f ???

sinon essaie
float saisie;
scanf("%f",&saisie);

if(  (saisie - (int)saisie) != 0) pas entier


---
ou si tu veux garder tes deux variables...

int test;
float saisie;
scanf("%f",&saisie);
test=saisie;
if(saisie - (float)test != 0) pas entier


En fait [réel - entier] est converti en entier => (25.5 - 25) est calculé comme (25 -25) donc =0.

ça doit etre ça !
0
omar
 
oui ca rend bien 0 mais comment faire pour quil me rende quelque chose de pertinent me permettant de savoir sil a entré un réel ou un entier
0
Utilisateur anonyme
 
tu as essayé les deux bouts de code que je t'ai donné ?

on passe dans le if si ce n'est pas un entier, le else quand c'est autre chose !
0
SKZ81
 
Quoi ???

T'as pas la fonction isInteger(void* x) sur ton compilo ???

LA HONTE !!!!!!!!!!!!!!!!!!!!!!!!!!!
;°)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chouchen
 
Pour sécuriser ton champs, met une clotûre électrique ;-)
0