Concatener un caratctère à une chaine de caractèreq

EMSIEN Messages postés 194 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 11 juin 2009 - 22 mai 2005 à 22:09
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011 - 23 mai 2005 à 03:14
salut, voila je veux créer une chaine de caractère en concaténant les caractères depuis une autre chaine (je ne veux pas concatener toute la chaine car mon but est de décortiquer une chaine contenant des espaces en plusieurs chaines sans espaces).

exemple:
chaine "salut ca va"==> ch1: "salut" ch2:"ca" ch3:"va"

j'utiliserais par la suite des listes chainées pour stocker mes chaines au lieu de variables mais il me faut d'abord de trouver la solution pour les chaines.

est ce qu'il ya un moyen pour ceci en C sous DOS merci pour Vos réponses.
P.S: strcat(chaine,caractère) ==> ça me donne une ERREUR

1 réponse

NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
23 mai 2005 à 03:14
/* essai ceci */

#include <string.h>

#include <stdio.h>



int main()

{

char * ptr;

char chaine[64];



/* chaine de test */

strcpy( chaine, "abc def ghi jkl mno pqr stu vwx yz" );



/* on va `splitter` la chaine à tous les espaces */

if ( (ptr = strtok(chaine, " ")) != NULL )

{

do

{

/* affiche toutes les chaines trouvées */

puts( ptr );

}

/* recherche le/les prochain(s) */

while ( (ptr = strtok(NULL, " ")) != NULL );

}

puts( "fin ..." );



return 0;

}



pour une simple concaténation, c'est _Extrèmement_ simple:

prend la taille de la chaine(size_t taille = strlen(chaine)) et ensuite:

chaine[taille++] = 'a';

chaine[taille++] = 'b';

/* etc ... */

chaine[taille] = '\0'; /* à ne pas oublier! */



ou encore:



char * ptr;

char chaine[64];



ptr = strcpy(chaine, "salut");

while ( *ptr ) ++ptr; /* trouve la fin de la chaine `chaine` */



/* et ensuite */

*ptr++ = 'a';

*ptr++ = 'b';

/* etc ... */

*ptr = '\0'; /* à ne pas oublier! */



puts( chaine );




il existe des tonnes de méthodes pour faire cela, à toi de prendre celle qui te convient ...






~(.:: NitRic ::.)~
0
Rejoignez-nous