Gestion d'erreur langage c?!?
Résolu
padawan
-
Uluqriorra -
Uluqriorra -
salutation
Comment tester si l'utilisateur a bien tapé un chiffre et non pas une lettre ou un symbole??
je n'arrive pas a voir la condition
merci !!!!
Comment tester si l'utilisateur a bien tapé un chiffre et non pas une lettre ou un symbole??
je n'arrive pas a voir la condition
merci !!!!
11 réponses
-
/* correction */ int isinteger(char *n) { int i; int a; a = 0; for(i = 0; n[i] != 0; i++) { if(isdigit(n[i])) { a += 1 } } return a / strlen(n); } -
Salut,
Tentes une conversion chaine vers int en utilisant la fonction "strtol" et analyses le retour.
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE) -
Salut!
Essaie ceci:
#include <ctype.h> int isdigit(int c);
Si la fonction retourne un entier == 0 => false sinon => true. Il existe aussi d'autres fonctions pour connaitre le type de character déclarés dans le header précité. -
Salut,
Bien vu Guki, c'est effectivement un chiffre et pas un nombre que padawan veut tester.
A++ -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
sa marché presque avec int isdigit(int c);
mais le probleme c'est que sa va juste de 0 a 9!!
et j ai besoin de 0 a inf.
je peu faire comment??? -
excusez moi je m'explique mal.
le nombre ou le chiffre est dans int donc cela n'est pas valable
merci comme meme. -
sinon voila le probleme plus directement
{
int y;
...
...
...
printf ("quelle ligne voulez vous modifiez?");
fflush(stdin);
scanf("%ld", &y);
...
...
}
si maintenant l'utilisateur se troupe et rentre une lettre ou un symbole le programme plante, j'aimerai juste un teste pour verifier si il a bien taper un nombre-
-
-
Salut,
Tu as juste à tester le retour de scanf sachant que ça renvoi 0 si aucune conversion n'a été faite.
Par exemple:if (scanf("%ld", &y)==0) printf("La saisie n'est pas un entier...");
A toi d'adapter la façon de gérer l'erreur, arrêter le prog, proposer une autre saise, etc.
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
-
-
sa marcherai, je vais faire comme ca merci !!
mais je trouvre que c'est un peu complexe pour un simple test non?? sa rajoute comme meme 10 ligne juste pour un simple test de cas d'erreur. -
excuse moi ta fonction est excellante!!
le seul probleme(qui doit etre le mien) est que x = atoi(n);
ne passe pas, sa bug et il y a un
warning: passing arg 1 of `atoi' makes pointer from integer without a cast
int y,test;
char test2
printf ("quelle ligne voulez vous modifiez?");
fflush(stdin);
scanf ("%s", &test2);
y=atoi(test2);
test=isinteger(&test2);
int isinteger(char *n)
{
int i=0;
int a=0;
for(i = 0; n[i] != 0; i++)
{
if(isdigit(n[i]))
{
a += 1;
}
}
return a / strlen(n);
} -
-
Met des masques de saisie, comme ca si l'utilisateur veut taper un symbole, rien ne v'a s'écrire