C Concatenation String

C Concatenation String
La concatenazione è il processo per aggiungere la seconda stringa alla fine della prima stringa. In questo articolo discuteremo di come concaterare le stringhe in C usando metodi diversi.

La funzione della libreria C standard che viene utilizzata per concaterare la stringa è strcat ().

Prototipo di funzione:

$ char *strcat (STR1, STR2);

dove str1 è la prima stringa e str2 è la seconda stringa. Il valore di ritorno della funzione è il puntatore alla stringa concatenata.

Ora, con l'aiuto di 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 concaterare, questo file di intestazione deve essere incluso.

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

Ne discuteremo anche nelle sezioni in arrivo.

Concatenazione di due stringhe usando la funzione della libreria C

#includere
#includere
#define buf_size 256
int main ()

char s1 [buf_size], s2 [buf_size]; / * Due buffer di stringa */
printf ("immettere la prima stringa \ n"); ] /* Stampa il messaggio alla console per l'utente per inserire 1st String* /
fgets (S1, buf_size, stdin); / * memorizzare la stringa di input utente in buffer S1 */
S1 [Strlen (S1) -1] = '\ 0';
printf ("Immettere la seconda stringa \ n");/* stampa il messaggio all'utente per immettere la 2a stringa*/
fgets (S2, buf_size, stdin); / * memorizzare la stringa di input utente in buffer S2 */
S2 [Strlen (S2) -1] = '\ 0';
strcat (S1, S2); / *Chiama la funzione standard con stringhe S1 e S2 */
printf ("\ n stringa concatenata è %s \ n \ n", s1); / *Output: S1 viene aggiunto con S2 */
restituzione 0;

Snapshot del programma e output:

Concatenazione di due stringhe senza usare la funzione della libreria

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

#includere
#includere
#define buf_size 256
int main ()

char s1 [buf_size], s2 [buf_size]; /* Dichiara i buffer S1, S2 per entrambe le stringa*/
int lunghezza = 0, i, j; /*Variabili necessarie per l'attraversamento del ciclo*/
printf ("immettere la prima stringa"); / * Stampa il messaggio utente per immettere la prima stringa */
fgets (S1, buf_size, stdin); /* La stringa di input utente verrà memorizzata in S1*/
S1 [Strlen (S1) -1] = '\ 0';
printf ("immettere la seconda stringa"); / * Stampa il messaggio utente per immettere la seconda stringa */
fgets (S2, buf_size, stdin); /* La stringa di input utente verrà memorizzata in S2*/
S2 [Strlen (S2) -1] = '\ 0';
/* Attraversa la prima stringa per trovare la lunghezza di S1*/
per (i = 0; s1 [i]!= '\ 0'; i ++)

lunghezza = lunghezza+1;

/*La lunghezza avrà la fine di S1, inizierà dalla lunghezza e copia l'intero S2 in S1*/
per (i = lunghezza, j = 0; s2 [j]!= '\ 0'; i ++, j ++)

S1 [i] = s2 [j];
S1 [i] = '\ 0';

/ *Stampa il risultato S1, concatenato */
printf ("\ n stringa concatenata è %s \ n \ n", s1);
restituzione 0;

Snapshot del programma e output:

Un altro modo di senza funzione di libreria

Concatenazione usando ricorsione:

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

Se il carattere null non è assegnato a S2 rispetto ad Aggiungi elemento di S2 alla fine di S1 ​​che è S1 [I+J] = S2 [J], questo aumenta il valore di I nella stringa.

Una funzione si chiamava passando le stringhe riformate (S1, S2) come argomento. Verrà chiamato ancora e ancora fino a quando l'S2 sarà vuoto.

La concatenata S1 sarà stampata da main () come

#includere
#includere
#define buf_size 256
/ * funzione ricorsiva per implementare la concatenazione stringa secondo la descrizione sopra */
void StringConcatenato (char *s1, char *s2)

statico int i = 0;
statico int j;
J = Strlen (S1);
Se(!S2 [i])

S2 [i] = '\ 0';

altro

S1 [J] = S2 [i];
S1 [j+1] = '\ 0';
I ++;
StringConcatenato (S1, S2);


int main ()

char s1 [buf_size], s2 [buf_size];
printf ("Immettere il valore della prima stringa:"); / * Messaggio utente per inserire 1st String */
fgets (S1, buf_size, stdin); / * Input utente Prima stringa, archivia in S1 */
S1 [Strlen (S1) -1] = '\ 0';
printf ("Immettere il valore della seconda stringa:"); / * Messaggio utente per immettere la seconda stringa */
fgets (S2, buf_size, stdin); / * Input utente First String, archivia in S2 */
S2 [Strlen (S2) -1] = '\ 0';
StringConcatenato (S1, S2); / * Chiama la funzione con S1, S2 come parametri */
printf ("combinazione di strings = '%s' \ n", s1);
restituzione 0;

Snapshot del programma e output:

Concatenazione usando le funzioni

La funzione stroncatenato () è chiamata dal main () per combinare due stringhe.

La funzione ottiene la lunghezza di String1 usando Stringlen (String1).

Aggiungi gli elementi di String2 [i] in String1 [i+j]. Questo passaggio verrà ripetuto fino a quando la stringa è vuota. Qui, adiaciniamo alla String2 a String1 alla fine di String1.

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

Il principale () stampica la stringa concatenata S1

#includere
#includere
#define buf_size 256
/ * funzione per implementare la concatenazione stringa secondo la descrizione sopra */
void stroncatenate (char *string1, char *string2)

int i;
int j = strlen (string1);
per (i = 0; stringa 2 [i]; i ++)

string1 [i+j] = string2 [i];

string1 [i+j] = '\ 0';

int main ()

char string1 [buf_size], string2 [buf_size];
printf ("Immettere la prima stringa:"); / * Messaggio utente per 1st String */
fgets (String1, buf_size, stdin); / * Input utente Seconda stringa, memorizzata in String1 */
String1 [strlen (String1) -1] = '\ 0';
printf ("Immettere la seconda stringa:"); / * Messaggio utente per 2a stringa */
fgets (string2, buf_size, stdin); / * Input utente Seconda stringa, memorizzata in String2 */
String2 [strlen (String2) -1] = '\ 0';
strConcatenate (String1, String2); /* Chiama la funzione con String1 e String2 come argomenti*/
printf ("resulting string = %s '\ n", string1);
restituzione 0;

Snapshot del programma e output:

Concatenazione stringa usando Memcpy

Usando la funzione Memcpy (), la concatenazione della stringa viene eseguita copiando parola per parola da un buffer di stringa alla fine di un altro buffer di stringa in cui la dimensione della parola è 4 byte considerando che stiamo eseguendo su una macchina da 32 bit mentre quando facciamo la concatenazione della stringa di Usando la concatenazione stringa usando la funzione strcat (), la concatenazione viene eseguita copiando byte per byte da un buffer di stringa a un altro buffer di stringa.

Questo approccio è efficiente dalle prestazioni.

L'unica considerazione durante l'utilizzo di Memcpy è prendersi cura di '\ 0'.

Programma C per raggiungere lo Strcat con Memcpy:

#includere
#includere
#define buf_size 256
Void strcat_memcpy (char *s1, char *s2)

int lunghezza1, lunghezza2;
lunghezza1 = strlen (s1);
lunghezza2 = strlen (s2);
memcpy (s1+lunghezza1, s2, lunghezza2);

int main ()

char string1 [buf_size], string2 [buf_size];
printf ("Immettere la prima stringa:"); / * Messaggio utente per 1st String */
fgets (String1, buf_size, stdin); / * Input utente Seconda stringa, memorizzata in String1 */
String1 [strlen (String1) -1] = '\ 0';
printf ("Immettere la seconda stringa:"); / * Messaggio utente per 2a stringa */
fgets (string2, buf_size, stdin); / * Input utente Seconda stringa, memorizzata in String2 */
String2 [strlen (String2) -1] = '\ 0';
strcat_memcpy (string1, string2); /* Chiama la funzione con String1 e String2 come argomenti*/
printf ("resulting string = %s '\ n", string1);
restituzione 0;

Snapshot del programma e output:

Conclusione:

Con tutta questa discussione possiamo concludere la concatenazione delle stringhe in c. Abbiamo visto molti esempi e programmi di esempio per la concatenazione delle stringhe. Ricorderemo gli elementi principali: esistono due modi, uno con C Standard e l'altro è il modo definito dell'utente. L'utente definito può essere ulteriormente di molti tipi, dipende da come l'utente desidera implementare la concatenazione delle stringhe.