Chaine de caractere ...

gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009 - 4 févr. 2007 à 19:16
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 7 févr. 2007 à 21:49
comment savoir si une chaine est composée essentiellement de chiffres ou de lettres ???.

je pourrai tester le code ASCI de chaque caractere, mais y aurait-il pas mieux?

gege

14 réponses

rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
4 févr. 2007 à 19:27
Il faudrat forcement verifier chacun des caractères ...

Louis
0
gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009
4 févr. 2007 à 19:47
en fait, il faut essayer de convertir la chaine en chiffer (atoi)
et tester la valeur de retour.
si 0 (pour entier) alors il y a des lettres.

merci a moi.

gege
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 févr. 2007 à 20:15
C'est nimporte quoi ça.

int n = atoi("0");

n vaut bien 0 et aucune lettre dans la chaine.
Il ne peut y avoir d'autre solution que de vérifier chaque octet de la chaine, il n'y a pas de magie en informatique.

ciao...
BruNews, MVP VC++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 févr. 2007 à 21:28
Moi je testerais un caractère sur deux en espérant que ceux que je ne vérifie pas sont bien des chiffres, je sais pas ce que t'en penses

_____________________________________
Un éditeur de ressources gratuit pour Windows
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 févr. 2007 à 21:53
pourquoi douter si on peut être sur en qlqs cycles de +...

ciao...
BruNews, MVP VC++
0
gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009
4 févr. 2007 à 22:19
je suis ok, avec brunews, mais c'est le seul cas particulier ou la chaine vaut "0".
sinon ca marche.

gege
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 févr. 2007 à 22:25
Je ne connais QUE des cas particuliers en info.
"0000000000000000000000000000000000000000000000000"

ciao...
BruNews, MVP VC++
0
gege1024 Messages postés 138 Date d'inscription vendredi 10 janvier 2003 Statut Membre Dernière intervention 27 janvier 2009
4 févr. 2007 à 22:28
on est d'accord.
donc ca marche pour tout sauf "0 fois n" !!!
mais moi, j'aurai JAMAIS ce cas.

juste mettre un commentaire (avertissement) dans le code est hop.

gege
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 févr. 2007 à 22:49
Mais atoi fait du travail en plus (multiplications par 10) dont tu n'a pas besoin. Pourquoi ne pas écrire ta propre fonction, dont la longueur serait de 3 lignes au plus?

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
4 févr. 2007 à 23:05
bool isAlpha(char *ch)
{
while(*ch<='Z'&&*ch>='A')
    ch++;
return *ch=='\0';
}
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
5 févr. 2007 à 04:04
Fait la en assembleur si tu veux de la magie au niveau rapidité

http://laptopgun.blogspot.com/
<
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
5 févr. 2007 à 09:41
pourquoi réinventer la roue alors que les fonctions
int isalnum (int c);
int isalpha (int c);
int isascii (int c);
int isblank (int c);
int iscntrl (int c);
int isdigit (int c);
existent !!!
0
yohan49 Messages postés 380 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 13 août 2011 7
7 févr. 2007 à 16:48
le chiffre 0 vaut 48 en decimal et 9 vaut 58 en decimal

int verif(char *scr)
{
   char c = 0;
   while(c == *scr++)
      if(c < 48 || c > 58)
         return 0;
   return 1;
}
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
7 févr. 2007 à 21:49
On gagne en lisibilité en écrivant '0' et '9' plutot que 48 et 58

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
Rejoignez-nous