J'aimerais tester le type d'une chaine .
"12" -> nombre
"rrrr" -> chaine
Comment faire?
J'aimerais tester le type d'une chaine .
"12" -> nombre
"rrrr" -> chaine
Comment faire?
Moi, j'essaierais avec strtol() et je regarderais si la lecture s'est arrêté au début ou à la fin de la chaîne...
Tu peux toujours regarder le code ascii en parcourant ta chaine ...
Tu te fais une fonction style is_num qui te renvoi 0 ou 1 si la chaine ne possède que des nombres par exemple.
Cela dépend s'il considèreEnvoyé par Médinoc
Comme le début d'un nombre ou non... Quoique si, endptr serait égale à NULL, alors on saurait que toute la chaîne a été lue...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 const char *s = "1234Hello";
Jc
Tu veux dire si *endptr == 0 ?Envoyé par fearyourself
Ca marche si la chaine a été 'nettoyée' (pas de '\n', par exemple)
ma chaine de caractère est définie de la manière suivante
char *chaine
est ce un problème?
Ca, c'est un pointeur, pas une chaine. Mais on peut espérer qu'il contienne l'adresse d'une chaine valide... si tu as fait ce qu'il fallait...Envoyé par molesqualeux
Si tout est correct, non, ce n'est pas un problème.
Comment exploiter ce pointeur sur chaine?
chaine[1] marchera pas?
merci
je pense que le compilateur ne fait pas la diff entre les chiffres et les lettres lorsque lui mets qqc entre " " il la considere comme une chaine de caracteres, ainsi "45455" est une chaine de caracteres composées des symboles 4 et 5 et 4 et 5 et 5
voilà
Ben si, car en C, *(chaine +1) est équivallent à chaine[1].Envoyé par molesqualeux
Que signifie *(tab+3) ?Envoyé par Emmanuel Delahaye
et maintenant
je voudrais nombre = 5 comment faire?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char *chaine; float nombre; chaine = "5";
merci
Ouvre un livre de C. Il y a des fonctions de conversion standard. On ne va pas répondre à des questions aussi basiques...Envoyé par molesqualeux
Comment convertir un chaîne de caractère en nombre ?
La c'est pratique quand même !!!
Marco85
Obsolète. Et pour du 'float', ça va pas le faire...Envoyé par emardjean
en fait je l'ai lu la page avant ,
mon problème c'est que buf est un tableau de chaine de caractères alors que moi j'ai
un pointeur sur chaine de caractères
Si une chaîne de caractères contient un nombre, il est possible de placer ce nombre dans une variable grâce à la fonction sscanf() (ANSI-C). Sa syntaxe est très similaire à celle de sprintf().
Notamment, les %d, %s… ont la même signification que pour sprintf().
Pour récupérer un nombre n d'une chaîne de caractères on procédera ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #include <stdio.h> char buf[32] = "15"; int f; sscanf(buf, "%f", &n);
mais mon problème est plus complexe
or le resultat est correct mais on dirait que c'est un problème de type.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 char *chaine; chaine = evaluation(p->exp1,4); printf("\n == %s\n",chaine); --> renvoie un truk correct sscanf(chaine, "%f", &valeur_num); printf("\n=== %f",valeur_num); -->renvoie un truc faux
pourtant
alors que
Code : Sélectionner tout - Visualiser dans une fenêtre à part char * evaluation(expression exp,int type)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 char *chaine; chaine = "10" printf("\n == %s\n",chaine); --> renvoie un truk correct sscanf(chaine, "%f", &valeur_num); printf("\n=== %f",valeur_num); -->renvoie un truc correct
Du moment que tu passes une adresse, peu importe...Envoyé par molesqualeux
Quel est le type de valeur_num ? Poste du code complet, sinon, on ne peut pas donner de réponse précise.Envoyé par molesqualeux
Partager