comment convertir un char en int ??

comment convertir un char en int ?? - C - Programmation

Marsh Posté le 06-08-2003 à 19:22:42    

voilà tout est dans la question.
Je ne sais pas comment convertir un char en int ou float en C.
J'ai essayé par affectation simple et ca ne me donne pas la valeur escompté.
A l'aide...

Reply

Marsh Posté le 06-08-2003 à 19:22:42   

Reply

Marsh Posté le 06-08-2003 à 20:02:51    

Y a quoi dans ton char ? Tu veux avoir quoi comme genre de résultat ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 06-08-2003 à 20:07:50    

regarde du coté de la fonction du recherche du forum et tapes y s(n)printf/sscanf

Reply

Marsh Posté le 06-08-2003 à 20:29:31    

char ou char * ? :heink:


Message édité par theshockwave le 06-08-2003 à 20:29:54

---------------
last.fm
Reply

Marsh Posté le 07-08-2003 à 17:31:20    

je vais tout vous expliquez.
Alors je prends une chaine de caractère dans un fichier texte que je mets dans un pointeur.
Mais maintenant j'ai besoin de récupérer des valeurs dans cette chaine de caractères pour faire des opération dessus (opération numérique). donc je pensais que de faire un truc de ce style allait marcher:
float a;
char *b;
a=a+(int)b[1]*10;
 
mais en fait ca marche pas (bon j'ai fait tout le malloc et tout y a pas de pb c juste pour vous montrez l'essentiel)
voilà là je pense que je vous ai tout donné comme explication.

Reply

Marsh Posté le 07-08-2003 à 17:33:49    

atoi

Reply

Marsh Posté le 07-08-2003 à 17:36:08    

Reply

Marsh Posté le 07-08-2003 à 17:36:47    

si ce sont des chiffres ASCII de 0 à 9 dans tes char; tu fais juste n = c - '0', où n = entier et c = char


Message édité par antp le 07-08-2003 à 17:36:58

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-08-2003 à 17:38:58    

ben dans ma chaine y a pas que des chiffres mais ce que je veux récupérer sont seulement des chiffres en effet

Reply

Marsh Posté le 07-08-2003 à 17:42:05    

mais quelle bande de blaireaux... foutez dans /dev/null votre atoi. utilise sscanf !!!

Reply

Marsh Posté le 07-08-2003 à 17:42:05   

Reply

Marsh Posté le 07-08-2003 à 17:45:52    

morphleus a écrit :

ben dans ma chaine y a pas que des chiffres mais ce que je veux récupérer sont seulement des chiffres en effet


tu balayes ta chaine et quand tu trouve un chiffre tu fais *10+(le caractere -'0')

Reply

Marsh Posté le 07-08-2003 à 17:49:04    

polo021 a écrit :


tu balayes ta chaine et quand tu trouve un chiffre tu fais *10+(le caractere -'0')

tu sais comment je réagis à la provoc... je n'ai aucun humour sur les sujets que vous connaissez  :o

Reply

Marsh Posté le 07-08-2003 à 17:50:43    

elle marche nikel avec le - '0' fallait y pensezr quand meme.

Reply

Marsh Posté le 07-08-2003 à 17:51:48    

morphleus a écrit :

elle marche nikel avec le - '0' fallait y pensezr quand meme.

[:ban]

Reply

Marsh Posté le 07-08-2003 à 17:52:10    

Taz a écrit :

tu sais comment je réagis à la provoc... je n'ai aucun humour sur les sujets que vous connaissez  :o  

:heink:

Reply

Marsh Posté le 07-08-2003 à 17:53:43    

tu plaisantes avec tes histoires -'0' j'espère...

Reply

Marsh Posté le 07-08-2003 à 17:54:30    

heu....
 
propose donc ta solution alors [:spamafote]
 
EDIT : j'espere que t'as vu que le monsieur avait ecrit

Citation :

ben dans ma chaine y a pas que des chiffres


Message édité par polo021 le 07-08-2003 à 17:55:15
Reply

Marsh Posté le 07-08-2003 à 17:57:36    

sscanf & [:quoted]


Message édité par Taz le 07-08-2003 à 17:57:46
Reply

Marsh Posté le 07-08-2003 à 17:57:42    

polo021 a écrit :

heu....
 
propose donc ta solution alors [:spamafote]
 
EDIT : j'espere que t'as vu que le monsieur avait ecrit

Citation :

ben dans ma chaine y a pas que des chiffres




 
Et alors?
sscanf est ce qu'il lui faut.


---------------
You have the right to remain silent. You are warned that anything you say can will be taken down used as evidence against you///Il n'y a pas de théorie de l'évolution. Juste une liste d'espèces que Chuck Norris autorise à survivre.
Reply

Marsh Posté le 07-08-2003 à 17:58:30    

quelqu'un est capable de comprendre pourquoi ato? sont des fonctions à proscrire?

Reply

Marsh Posté le 07-08-2003 à 18:00:00    

je savais pas que sscanf ne gardait que le chiffres.

Reply

Marsh Posté le 07-08-2003 à 18:00:52    

polo021 a écrit :

je savais pas que sscanf ne gardait que le chiffres.
 

:heink:

Reply

Marsh Posté le 07-08-2003 à 18:03:41    


ben oui [:spamafote]
si il a une string "35h9.34"
comment tu vas faire ton sscanf pour qu'il te resorte 35934 ????

Reply

Marsh Posté le 07-08-2003 à 18:04:25    

et comment tu fais avec atoi? là n'est pas là question du tout

Reply

Marsh Posté le 07-08-2003 à 18:08:01    

Taz a écrit :

et comment tu fais avec atoi? là n'est pas là question du tout

:pfff:  
 
relis donc le topic en entier :o
 
Quand j'ai propose la solution atoi, il n'avait pas encore precise qu'il y avait d'autres caracteres dans sa chaine que 0-9.
Et apres j'ai propose

Citation :

tu balayes ta chaine et quand tu trouve un chiffre tu fais *10+(le caractere -'0')


Tandis que toi tu n'as toujours propose que sscanf meme sans dire comment on s'en sert dans ce cas precis  :pfff:

Reply

Marsh Posté le 07-08-2003 à 18:10:22    

Taz a écrit :

quelqu'un est capable de comprendre pourquoi ato? sont des fonctions à proscrire?

Parce qu'y a pas de gestion d'erreurs :o


Message édité par *syl* le 07-08-2003 à 18:10:31
Reply

Marsh Posté le 07-08-2003 à 18:11:28    

polo021 a écrit :

Tandis que toi tu n'as toujours propose que sscanf meme sans dire comment on s'en sert dans ce cas precis  :pfff:  

Pkoi il devrait dire comment on se sert de cette fonction :heink:  
Tu lis l'aide et basta :o

Reply

Marsh Posté le 07-08-2003 à 18:14:45    

merci pour toutes vos explications ca m'a bien aidé

Reply

Marsh Posté le 07-08-2003 à 18:16:03    

L'aide ne m'aide pas, je reste sur ma faim. [:zion]

Reply

Marsh Posté le 07-08-2003 à 20:31:22    

Bah suffit de faire un sscanf(regexp(lachaine, pattern_nettoyeur_qui_garde_que_les_chiffres)) et zou :)
 
PS: c'est certainement pas "regexp" la fonction en C, et pas forcément la bonne syntaxe, mais c'est un algo simple et efficace.

Reply

Marsh Posté le 07-08-2003 à 20:38:36    

pas besoin de pattern nettoyeur.
 
suffit de parcourir la chaine, et chaque caractère qui valide int isdigit(int c) (de <ctype.h> ), tu le rajoutes dans ton buffer, et apres, effectivement, sscanf

Reply

Marsh Posté le 07-08-2003 à 20:58:23    

Taz a écrit :

pas besoin de pattern nettoyeur.
 
suffit de parcourir la chaine, et chaque caractère qui valide int isdigit(int c) (de <ctype.h> ), tu le rajoutes dans ton buffer, et apres, effectivement, sscanf


Ouais, mais les regexp étant très performantes, chais pas ce qui est le mieu.

Reply

Marsh Posté le 07-08-2003 à 21:04:13    

Y a pas de regexpr dans les librairies C standard il me semble


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-08-2003 à 21:07:21    

MagicBuzz a écrit :


Ouais, mais les regexp étant très performantes, chais pas ce qui est le mieu.

t'as vu ça ou? je vois pas ce qu'on peut faire de mieux qu'un pauvre parcours linénaire...


Message édité par Taz le 07-08-2003 à 21:07:45
Reply

Marsh Posté le 07-08-2003 à 21:07:33    

antp a écrit :

Y a pas de regexpr dans les librairies C standard il me semble

y a pas

Reply

Marsh Posté le 07-08-2003 à 21:54:21    

ben par exemple, pour remplacer des sous-chaînes par des autres (donc parcours linéaire basique) un regexp peut être jusqu'à 2 fois plus rapide.
 
(bon, d'un autre côté, ce chiffre est tiré de la doc de vb, qui est pas très rapide pour ce qui est des traîtements de chaînes :D)


Message édité par MagicBuzz le 07-08-2003 à 21:55:19
Reply

Marsh Posté le 07-08-2003 à 21:58:53    

réfléchis un peu, par ce que je vois mal comment une regex peut faire mieux qu'un parcours linéaire... et la copie qui va avec...

Reply

Marsh Posté le 07-08-2003 à 22:07:44    

bah ça dépend comment est codée ta "isDigit()" par exemple.


Message édité par MagicBuzz le 07-08-2003 à 22:07:58
Reply

Marsh Posté le 07-08-2003 à 22:10:39    

MagicBuzz a écrit :

bah ça dépend comment est codée ta "isDigit()" par exemple.

:heink:

Reply

Marsh Posté le 07-08-2003 à 22:13:01    

bah y'a 50 façon de coder une fonction aussi basique, et notamment les fonctions style regexp sont très souvent ultra optimisée, genre y'a pas une ligne de code dedans, y'a que de l'asm, sans le moindre cycle superflu

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed