En C, les "chaînes" ne sont que des char
tableaux simples . Par conséquent, vous ne pouvez pas les concaténer directement avec d'autres "chaînes".
Vous pouvez utiliser la strcat
fonction, qui ajoute la chaîne pointée par src
à la fin de la chaîne pointée par dest
:
char *strcat(char *dest, const char *src);
Voici un exemple de cplusplus.com :
char str[80];
strcpy(str, "these ");
strcat(str, "strings ");
strcat(str, "are ");
strcat(str, "concatenated.");
Pour le premier paramètre, vous devez fournir le tampon de destination lui-même. Le tampon de destination doit être un tampon de tableau de caractères. Par exemple:char buffer[1024];
Assurez-vous que le premier paramètre a suffisamment d'espace pour stocker ce que vous essayez de copier dedans. Si vous en disposez, il est plus sûr d'utiliser des fonctions telles que: strcpy_s
et strcat_s
où vous devez explicitement spécifier la taille du tampon de destination.
Remarque : Un littéral de chaîne ne peut pas être utilisé comme tampon, car il s'agit d'une constante. Ainsi, vous devez toujours allouer un tableau de caractères pour le tampon.
La valeur de retour de strcat
peut simplement être ignorée, elle renvoie simplement le même pointeur que celui qui a été transmis comme premier argument. Il est là pour votre commodité et vous permet de chaîner les appels en une seule ligne de code:
strcat(strcat(str, foo), bar);
Ainsi, votre problème pourrait être résolu comme suit:
char *foo = "foo";
char *bar = "bar";
char str[80];
strcpy(str, "TEXT ");
strcat(str, foo);
strcat(str, bar);