Autore: Fabio Di Matteo
Ultima revisione: 10/06/2024 - 18:40
Esistono diversi modi di concatenare stringhe in C, per quanto riguarda la concatenazione di vettori di char si utilizza normalmente strcat(…)
contenuta in string.h
, invece per quanto riguarda la concatenazione di puntatori a char si possono fare diverse altre acrobazie .
In questo primo esempio di concatenazione non è necessario includere string.h
.
char *s1="Pane e "; //stringa 1 char *s2="vino"; //stringa 2 /*Alloco per s3 il numero di byte somma di s1+s2, in pratica s3 dovra contenere le due stringhe e quindi deve avere una dimenzione adeguata*/ char *s3=malloc(sizeof(s1)+sizeof(s2)); //metto s1 e s2 in s3, le attacco, difatti %s%s vuol dire appunto questo sprintf(s3 ,"%s%s",s1,s2); printf("Il valore di s3 -> %s\n",s3); //stampo sul video s3
Seguendo questo principio è possibile concatenare stringhe a interi e altri tipi di dato, in quanto verrà tutto messo dentro una stringa di adeguata capienza.
char *s1="Pane e "; //stringa 1 char *s2="vino"; //stringa 2 char i = 3; //intero /*Alloco per s3 il numero di byte somma di s1 + s2 + i, in pratica s3 dovra contenere le due stringhe e l' intero i e quindi deve avere una dimenzione adeguata*/ char *s3=malloc(sizeof(s1)+sizeof(s2)+sizeof(i)); //metto s1 , s2 e i in s3, le attacco, difatti %s%s vuol dire appunto questo sprintf(s3 ,"%s%s%d",s1,s2,i); printf("Il valore di s3 -> %s\n",s3); // stampo il risultato
Ancora altri esempi:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, char** argv) { char *str1="Hello "; char *str2="world "; char *str3="again! "; char *text=malloc(sizeof(str1)+sizeof(str2)+sizeof(str3)+1); sprintf(text,"%s%s%s",str1,str2,str3); printf("%s\n", text); char* str4="For last time!"; char* text2=strdup(text); text2=malloc(sizeof(text)+sizeof(str4)+1); sprintf(text2, "%s%s", text,str4); printf("%s\n", text2); return 0; }