Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

transformer une chaine de caractère

4 réponses
Avatar
programmation
Bonjour,

Dans mon programme C sous windows, j'ai un fichier contenant deux
champs: objet (chaine de caract=E8re) et valeur(chaine de caract=E8re)
ces deux champs sont s=E9par=E9s par deux points :

par exemple soit le fichier 'input.txt':


1 3 4 10 : d b c
5 2 16 8 : a d c



Je voulais transformer ce fichier par exemple dans un autre fichier
'output.txt' de sorte d'obtenir:


1 : d b c
3 : d b c
4 : d b c
10 : d b c
5 : a d c
2 : a d c
16 : a d c
8 : a d c


Je n'arrive =E0 transformer la chaine '1 3 4 10' transform=E9s en quatre
entiers 1, 3, 4 et 10
et pour chaque entier on ajoute la m=EAme chaine valeur 'd b c'

de m=EAme pour la chaine '5 2 16 8' transform=E9s en quatre entiers
5, 2, 16,8
et pour chaque entier on ajoute la m=EAme chaine valeur 'a d c'

Je pensais =E0 faire cette transformation car je voulais lire =E0 partir
de la chaine '1 3 4 10' l'entier 1 pour faire un autre traitement qui
utilise ce entier et ne pas toute la chaine .
de m=EAme on lit l'entier 3 puis l'entier 4 puis l'entier 10.

apr=E8s on fait la m=EAme chose pour la chaine '5 2 16 8' c'est =E0 dire
nous avons besoin de l'entier 5 puis 2 puis 16 puis 8.


Que proposez vous ?

Merci.

4 réponses

Avatar
domi
programmation wrote:
Bonjour,

Dans mon programme C sous windows, j'ai un fichier contenant deux
champs: objet (chaine de caractère) et valeur(chaine de caractère)
ces deux champs sont séparés par deux points :
par exemple soit le fichier 'input.txt':
1 3 4 10 : d b c
5 2 16 8 : a d c
Je voulais transformer ce fichier par exemple dans un autre fichier
'output.txt' de sorte d'obtenir:
1 : d b c
3 : d b c



Tu découpes juste la chaine en 2 fois : par rapport au token ":", puis
espace pour la première partie et puis tu concatènes.
C'est tout.
Avatar
programmation
> Tu découpes juste la chaine en 2 fois : par rapport au token  ":", pu is
espace pour la première partie et puis tu concatènes.
C'est tout.



Bonjour,

Pouvez vous détailler votre solution car je ne comprends pas votre
idée ?

C'est possible un pseudo code.

Merci.
Avatar
programmation
Bonjour,

Mon programme C est sous windows.

Je vous explique mon problème.

En réalité, j'ai un fichier contenant deux champs: objet (chaine de
caractère) et valeur(chaine de caractère)
ces deux champs sont séparés par deux points :

par exemple soit le fichier 'input.txt':


1 3 4 10 : d b c
5 2 16 8 : a d c


Je voulais transformer ce fichier par exemple dans un autre fichier
'output.txt' de sorte d'obtenir:

1 : d b c
3 : d b c
4 : d b c
10 : d b c
5 : a d c
2 : a d c
16 : a d c
8 : a d c


Je n'arrive à transformer la chaine '1 3 4 10' transformés en quatre
entiers 1, 3, 4 et 10
et pour chaque entier on ajoute la même chaine valeur 'd b c'

de même pour la chaine '5 2 16 8' transformés en quatre entiers
5, 2, 16,8
et pour chaque entier on ajoute la même chaine valeur 'a d c'

Je pensais à faire cette transformation car je voulais lire à partir
de la chaine '1 3 4 10' l'entier 1 pour faire un autre traitement qui
utilise ce entier et ne pas toute la chaine .
de même on lit l'entier 3 puis l'entier 4 puis l'entier 10.

après on fait la même chose pour la chaine '5 2 16 8' c'est à dire
nous avons besoin de l'entier 5 puis 2 puis 16 puis 8.


Que proposez vous ?


Merci.
Avatar
domi
programmation wrote:
Tu découpes juste la chaine en 2 fois : par rapport au token ":", puis
espace pour la première partie et puis tu concatènes.
C'est tout.



Bonjour,

Pouvez vous détailler votre solution car je ne comprends pas votre
idée ?



tu découpes juste avec strtok() ou fonction similaire

d'abord "1 3 4 10 : d b c" par le token ":"
1 3 4 10
d b c

puis "1 3 4 10" par le token espace
1
3
4
10

et il n'y a plus qu'à concaténer avec "d b c" conservé du premier découpage