Concatenazione di stringhe C

C String Concatenation

La concatenazione è il processo per aggiungere la seconda stringa alla fine della prima stringa. In questo articolo discuteremo come concatenare le stringhe in C utilizzando metodi diversi.

La funzione della libreria C standard utilizzata per concatenare la stringa è strcat().



Prototipo di funzione:

$char * strcat (str1,str2);

dove str1 è la prima stringa e str2 è la seconda stringa. Il valore restituito dalla funzione è il puntatore alla stringa concatenata.



Ora, con l'aiuto dell'esempio vedremo come viene eseguita la concatenazione.



Esempio 1:

$ strcat (str1,str2);
dove str1 è Bella
str2 è Whitmann

dopo la concatenazione della stringa,la prima stringa sarà

str1 Bella Whitmann
str2 Whitmann

mentre string2 rimarrà lo stesso.

Esempio2:

$ strcat (str2,str1);
dove str1 è Bella
str2 è Whitmann

dopo la concatenazione della stringa,la stringa concatenata sarà

str1 Bella
str2 Bella Whitmann

mentre string1 rimarrà lo stesso.

Dichiarazione nel file di intestazione C

Le funzioni di gestione delle stringhe sono dichiarate in headerfile. Se si desidera utilizzare la funzione standard per concatenare, è necessario includere questo file di intestazione.



Quindi, possiamo ottenere la concatenazione di stringhe in due modi. Uno è con l'utilizzo della funzione della libreria C standard e l'altro è senza l'utilizzo della funzione della libreria C. Di seguito sono riportati programmi di esempio per dimostrare entrambi i modi. La concatenazione di stringhe senza utilizzare la funzione della libreria C può essere implementata in più modi.

Discuteremo anche di questo nelle prossime sezioni con esempi.

Concatenazione di due stringhe utilizzando la funzione di libreria C

#includere

#includere

#define BUF_SIZE 256
intprincipale()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; /* Due buffer di stringhe */

printf ('Inserisci la prima stringa '); ] /* Stampa il messaggio sulla console per consentire all'utente di inserire la prima stringa*/
fget (S1,BUF_SIZE,standard); /* memorizza la stringa di input dell'utente nel buffer S1 */
S1[ strlen (S1)-1] = ' 0';

printf ('Inserisci la seconda stringa ');/* Stampa il messaggio all'utente per inserire la seconda stringa*/
fget (S2,BUF_SIZE,standard); /* memorizza la stringa di input dell'utente nel buffer S2 */
S2[ strlen (S2)-1] = ' 0';

strcat (S1,S2); /*Chiama la funzione standard con le stringhe S1 e S2 */

printf (' La stringa concatenata è %s ',S1); /*Output: S1 viene aggiunto con S2 */

Restituzione 0;
}

Istantanee del programma e dell'output:

Descrizione del testo generata automaticamente

Descrizione del testo generata automaticamente con sicurezza media

Concatenazione di due stringhe senza utilizzare la funzione di libreria

Utilizzo del ciclo for per copiare la seconda stringa alla fine della prima stringa.

#includere

#includere

#define BUF_SIZE 256
intprincipale()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; /* Dichiara i buffer S1, S2 per entrambe le stringhe*/
intlunghezza= 0,io,J; /*Variabili necessarie per l'attraversamento del ciclo*/

printf ('Inserisci la prima stringa'); /* Stampa il messaggio utente per inserire la prima stringa */
fget (S1,BUF_SIZE,standard); /* la stringa di input dell'utente verrà archiviata in S1*/
S1[ strlen (S1)-1] = ' 0';

printf ('Inserisci la seconda stringa'); /* Stampa il messaggio utente per inserire la seconda stringa */
fget (S2,BUF_SIZE,standard); /* la stringa di input dell'utente verrà archiviata in S2*/
S2[ strlen (S2)-1] = ' 0';
/* Attraversa la prima stringa per trovare la lunghezza di S1*/
per(io=0;S1[io]! =' 0';io++)
{
lunghezza=lunghezza+1;
}

/*length avrà la fine di S1, inizia dalla lunghezza e copia l'intero S2 in S1*/
per(io=lunghezza,J=0;S2[J]! =' 0';io++,J++)
{
S1[io]=S2[J];
S1[io]=' 0';
}

/*Stampa il risultato S1 , concatenato */
printf (' La stringa concatenata è %s ',S1);
Restituzione 0;
}

Istantanee del programma e dell'output:

Descrizione del testo generata automaticamente

Descrizione del testo generata automaticamente

Un altro modo di senza funzione di libreria

Concatenazione tramite ricorsione:

La funzione stringconcatenate() verrà utilizzata per ottenere la lunghezza di string1. Se S2 è vuoto, a S2 verrà assegnato un carattere nullo.

Se il carattere null non è assegnato a S2 di aggiungere l'elemento di S2 alla fine di S1 ​​che è S1[i+j]=S2[j], questo aumenta il valore di i nella stringa.

Una funzione verrà chiamata da sola passando le stringhe riformate (S1,S2) come argomento. Verrà chiamato ancora e ancora fino a quando S2 non sarà vuoto.

L'S1 ​​concatenato verrà stampato da main() come

#includere

#includere

#define BUF_SIZE 256

/* funzione ricorsiva per implementare la concatenazione di stringhe come da descrizione sopra */
vuotostringconcatenate(char *S1,char *S2)
{
statico intio=0;
statico intJ;
J= strlen (S1);
Se(!S2[io])
{
S2[io]=' 0';
}
altro
{
S1[J] =S2[io];
S1[J+1] = ' 0';
io++;
stringconcatenate(S1,S2);
}
}
intprincipale()
{
charS1[BUF_SIZE],S2[BUF_SIZE];

printf ('Inserisci il valore della prima stringa:'); /* messaggio utente per inserire la prima stringa */
fget (S1,BUF_SIZE,standard); /* input dell'utente prima stringa, memorizza in S1 */
S1[ strlen (S1)-1] = ' 0';

printf ('Inserisci il valore della seconda stringa:'); /* messaggio utente per inserire la seconda stringa */
fget (S2,BUF_SIZE,standard); /* input dell'utente prima stringa, memorizza in S2 */
S2[ strlen (S2)-1] = ' 0';

stringconcatenate(S1,S2); /* Chiama la funzione con S1,S2 come parametri */

printf ('combinazione di stringhe ='%s' ',S1);
Restituzione 0;
}

Istantanee del programma e dell'output:

Descrizione del testo generata automaticamente

Descrizione del testo generata automaticamente

Concatenazione utilizzando le funzioni

La funzione strconcatenate() viene chiamata da main() per combinare due stringhe.

La funzione ottiene la lunghezza di stringa1 utilizzando stringlen(string1).

Unisci gli elementi di stringa2[i] in stringa1[i+j]. Questo passaggio verrà ripetuto finché la stringa non sarà vuota. Qui, uniamo string2 a string1 alla fine di string1.

La stringa concatenata (stringa 1) verrà ricevuta entro la fine quando verranno eseguite tutte le iterazioni del ciclo for.

Il main() stampa la stringa concatenata S1

#includere

#includere

#define BUF_SIZE 256

/* funzione per implementare la concatenazione di stringhe come da descrizione sopra */
vuotostrconcatenate(char *stringa1, char*stringa2)
{
intio;
intJ= strlen (stringa1);
per(io=0;corda2[io];io++)
{
stringa1[io+J]=stringa2[io];
}
stringa1[io+J]= ' 0';
}
intprincipale()
{
charstringa1[BUF_SIZE],stringa2[BUF_SIZE];
printf ('Inserisci la prima stringa:'); /* Messaggio utente per la prima stringa */
fget (stringa1,BUF_SIZE,standard); /* Seconda stringa immessa dall'utente, memorizzata in string1 */
stringa1[ strlen (stringa1)-1] = ' 0';

printf ('Inserisci la seconda stringa:'); /* Messaggio utente per la seconda stringa */
fget (stringa2,BUF_SIZE,standard); /* Inserimento utente seconda stringa, memorizzata in string2 */
stringa2[ strlen (stringa2)-1] = ' 0';

strconcatenate(stringa1,stringa2); /* Chiama la funzione con string1 e string2 come argomenti*/

printf ('Stringa risultante = %s' ',stringa1);
Restituzione 0;
}

Istantanee del programma e dell'output:

Descrizione del testo generata automaticamente

Descrizione del testo generata automaticamente

Concatenazione di stringhe utilizzando memcpy

Usando la funzione memcpy(), la concatenazione della stringa viene eseguita copiando parola per parola da un buffer di stringhe alla fine di un altro buffer di stringhe dove la dimensione della parola è di 4 byte considerando che stiamo eseguendo su una macchina a 32 bit mentre quando eseguiamo la concatenazione di stringhe da utilizzando la concatenazione di stringhe utilizzando la funzione strcat(), la concatenazione viene eseguita copiando byte per byte da un buffer di stringhe a un altro buffer di stringhe.

Questo approccio è efficiente in termini di prestazioni.

L'unica considerazione durante l'utilizzo di memcpy è occuparsi di ''.

Programma C per ottenere lo strcat con memcpy:

#includere

#includere

#define BUF_SIZE 256

Vuoto strcat_memcpy(char *S1, char *S2)
{
intlunghezza1,lunghezza2;
lunghezza1= strlen (S1);
lunghezza2= strlen (S2);
memcpy (S1+lunghezza1,S2,lunghezza2);
}
intprincipale()
{

charstringa1[BUF_SIZE],stringa2[BUF_SIZE];
printf ('Inserisci la prima stringa:'); /* Messaggio utente per la prima stringa */
fget (stringa1,BUF_SIZE,standard); /* Seconda stringa immessa dall'utente, memorizzata in string1 */
stringa1[ strlen (stringa1)-1] = ' 0';

printf ('Inserisci la seconda stringa:'); /* Messaggio utente per la seconda stringa */
fget (stringa2,BUF_SIZE,standard); /* Inserimento utente seconda stringa, memorizzata in string2 */
stringa2[ strlen (stringa2)-1] = ' 0';

strcat_memcpy(stringa1,stringa2); /* Chiama la funzione con string1 e string2 come argomenti*/

printf ('Stringa risultante = %s' ',stringa1);
Restituzione 0;


}

Istantanee del programma e dell'output:

Descrizione del testo generata automaticamente

Descrizione del testo generata automaticamente

Conclusione:

Con tutta questa discussione possiamo concludere la concatenazione di stringhe in C. Abbiamo visto molti esempi e programmi di esempio per la concatenazione di stringhe. Ricorderemo gli elementi principali: Ci sono due modi, uno con lo standard C e l'altro è un modo definito dall'utente. Definito dall'utente può inoltre essere di molti tipi, dipende da come l'utente desidera implementare la concatenazione di stringhe.