bonjours a tous
j'ai plusieur variables du genre: 001 002 032 030 056 120 026
toujours avec 3 chiffres
mon but etant de leur enlever les 0 inutiles!!!!!!!
on aura donc 1 2 32 30 56 120 26!!
alors voila si quelqu'un a une idee !!
merci
Version imprimable
bonjours a tous
j'ai plusieur variables du genre: 001 002 032 030 056 120 026
toujours avec 3 chiffres
mon but etant de leur enlever les 0 inutiles!!!!!!!
on aura donc 1 2 32 30 56 120 26!!
alors voila si quelqu'un a une idee !!
merci
printf ( "%d", .. )
Salut acik59,
Y a un petit "truc", dans ton exemple tu veu virer les "0",
le souci sera de lui indiquer comment garder le "0" de "30", tu dispose de séparateur entre tes valeurs ? (";" ou " " par exemple),
si oui tu dispose d'une fonction qui te permettra d'extraire les valeurs voulues, jette un oeil à la FAC, normalement tu devrais trouver ce que tu cherche.
Voila
mes valeurs sont separer par un passage a la ligne!!
001
002
003
015
....
..
je peut les traiter un par un j'ai cree une fonction pour!!
cependant je n'est pas d'idee sur le faite de retirer les 0
est ce q'un calcul matheu ferait l'affaire(je sais pas)!
ou il y existe comme d'autre language (exemple tcl) l'utilisation d'expression reguliere qui font l'affaire!!
Donc si je récapitule tu as des valeurs dans un fichier et tu veux enlever les 0 devant.
Mais où ? Dans le fichier ? Tu veux faire quoi avec ces chiffres. Si tu les mets dans des int les 0 sont plus là.
est ce que l'on pourrait faire un truc du genre!!
si (variable<100)
on ne garde que les dizaine et unite
si(variable<10)
on ne garde que les unite
si(variable==0)
on a rien("")
ben en faite je recupere ces valeurs dans une variables char que je ne peut mettre en int (trop compliquer pour explique)
char * tu veux dire.Citation:
Envoyé par acik59
Tu as la possibilité de décaler vers le gauche tant que le premier chiffre est un 0, ou bien de convertir en int pour de remettre dans ton char *.
pas trés bien saisie!!
(gauche!!)
Citation:
Envoyé par acik59
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void shift_left(char *string) { size_t i = 0; for(i = 0; i < strlen(string); i++) { string[i] = string[i+1]; } } [...] char chiffre[100] = "00010"; while(chiffre[i] == '0') { shift_left(chiffre); }
:roll: enfin si la simplicité vous déplaît...Citation:
Envoyé par souviron34
euh merci pour le code
mais ca ne marche pas
erreur de segmentation
je sais pas si tu as essayer le code
mais je n'est pas parler d'afficher(printf)
c'est des nombres que je gardes dans une variable chainee!!
OupsssCitation:
Envoyé par acik59
Remplace chiffre[i] par chiffre[0]
eh bienCitation:
mais je n'est pas parler d'afficher(printf)
Code:sprintf(chaine_finale,"%d",atoi(chaine_orig));
C'est aussi ce que j'ai proposé.Citation:
Envoyé par josse95
strtol à la place de atoi.
j'aime bien ta solution du sprintf
je sais que ca marche normalement mais dans ton exemple ca ne marche pas
j'ai essayer de le rectifier
erreur de segmentation
Si tu as une erreur de segmentation sur le sprintf c'est que tu n'as pas alloué de mémoire pour chaine_orig (le 1er paramètre du sprintf).
Poste ton code si tu veux qu'on regarde ...
chaine_finale plutot.Citation:
Envoyé par josse95
Oui, autant pour moi !