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 !!!!
A voir également:
- Gestion d'erreur en c
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion cabinet médical gratuit - Télécharger - Organisation
- Logiciel gestion cave à vin gratuit excel - Télécharger - Cuisine & Gastronomie
- Logiciel gestion garage - Télécharger - Organisation
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)
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:
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é.
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é.
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???
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.
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
{
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:
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)
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.
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);
}
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);
}