voila cette chaine de caractere char* "... [8,12] ... ". ; comment faire pour extraire 8 et 12 et les remplacer par deux autres nombres. (8 et 12 sont juste des exemples). merci bien de me donner le code c necessaire!
Version imprimable
voila cette chaine de caractere char* "... [8,12] ... ". ; comment faire pour extraire 8 et 12 et les remplacer par deux autres nombres. (8 et 12 sont juste des exemples). merci bien de me donner le code c necessaire!
bonjour,
il serait assez intéressant de savoir si la chaine donnée en exemple : "... [8,12] ..." est toujours dans le même format ou bien si ce format peut changer ?
Le 3 points en début et fin de chaine ont-ils une utilité ?
Si rien ne change, il serait envisageable de faire une recherche dans la chaîne en position 5 et 7, lire le caractère. Si le caractère lu est un chiffre (fonction atoi et isdigit de ctype.h), lire le caractère suivant.
Puis modifier les caractères concernés à partir de la position d'origine.
Attention, lors de la définition de la chaine, il faut avoir prévus assez d'espace (caractère \0 compris) pour le cas ou la chaine serait par exemple : "... [4,5] ..." et deviendrait "... [45,78] ...], soit 2 caractères de plus.
bon courage.
- Si la chaine est définie commeCitation:
voila cette chaine de caractere char* "... [8,12] ... ". ; comment faire pour extraire 8 et 12 et les remplacer par deux autres nombres. (8 et 12 sont juste des exemples).
ce n'est pas possible : la chaine est non modifiable. Il faut utiliser un autre tableau comme destination.Code:char * chaine = "... [8,12] ... ";
- Si la chaine est définie comme
Le remplacement sur place (sans passer par un autre tableau) est délicat car la chaine de remplacement peut être d'une taille différente de celle de la chaine d'origine "8,12". Ce n'est pas impossible si le tableau est assez grand pour contenir la chaine finale.Code:
1
2
3 char chaine[] = "... [8,12] ... "; // ou char chaine[---] = "... [8,12] ... ";
Si on peut passer par un autre tableau :
Code:
1
2
3
4
5 - rechercher dans la chaine d'origine l'adresse p du caractère '[' (strchr) - remplacer ce caractère par '\0' et incrémenter p - copier le début du tableau dans le tableau final. Ajouter '[' et les nouvelles valeurs. (sprintf) - rechercher dans la chaine d'origine à partir de p l'adresse p du caractère ']' - Ajouter dans le tableau final la chaine à partir de p (strcat).
Tu as les éléments pour le faire toi même.Citation:
merci bien de me donner le code c necessaire!