Gestion d'erreur langage c?!?
Résolu/Fermé
A voir également:
- Gestion d'erreur en c
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Logiciel gestion photo gratuit - Guide
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
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); }
Ravachol
Messages postés
566
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
120
10 janv. 2005 à 09:03
10 janv. 2005 à 09:03
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
Ravachol
Messages postés
566
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
120
11 janv. 2005 à 21:15
11 janv. 2005 à 21:15
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);
}