C Concatenação de String

C Concatenação de String
Concatenação é o processo de anexar a segunda sequência ao final da primeira string. Neste artigo, discutiremos como concatenar strings em C usando diferentes métodos.

A função padrão da biblioteca C usada para concatenar a string é strcat ().

Prototipo de função:

$ char *strcat (str1, str2);

onde str1 é o primeiro string e str2 é a segunda string. O valor de retorno da função é o ponteiro da sequência concatenada.

Agora, com a ajuda do exemplo, veremos como a concatenação é realizada.

Exemplo 1:

$ strcat (str1, str2);
onde str1 é "bella"
STR2 é "Whitmann"
Após concatenação de string, a primeira string será
STR1 “Bella Whitmann”
STR2 "Whitmann"

Enquanto String2 permanecerá o mesmo.

Exemplo2:

$ strcat (STR2, STR1);
onde str1 é "bella"
STR2 é "Whitmann"
Após concatenação de string, a string concatenada será
STR1 "Bella"
STR2 “Bella Whitmann”

Enquanto String1 permanecerá o mesmo.

Declaração no arquivo de cabeçalho C

As funções de manuseio de strings são declaradas em Headerfile. Se alguém quiser usar a função padrão para concatenar, este arquivo de cabeçalho precisa ser incluído.

Portanto, podemos alcançar concatenação de string de duas maneiras. Um é o uso da função padrão da biblioteca C e outro sem usar a função da biblioteca C. A seguir, são seguintes programas para demonstrar os dois caminhos. Concatenação de string sem usar a função da biblioteca C pode ser implementada de várias maneiras.

Discutiremos isso também nas próximas seções com exemplo.

Concatenação de duas cordas usando a função de biblioteca C

#incluir
#incluir
#Define BUF_SIZE 256
int main ()

char s1 [buf_size], s2 [buf_size]; / * Dois buffers de string */
printf ("Digite a primeira string \ n"); ] /* Imprimir mensagem ao console para o usuário inserir 1st String* /
fgets (s1, buf_size, stdin); / * Armazene a sequência de entrada do usuário no buffer S1 */
S1 [strlen (s1) -1] = '\ 0';
printf ("Digite a segunda string \ n");/* Mensagem de imprimir para o usuário para inserir a 2ª String*/
fgets (s2, buf_size, stdin); / * Armazene a sequência de entrada do usuário no buffer S2 */
S2 [strlen (s2) -1] = '\ 0';
strcat (S1, S2); / *Chame a função padrão com strings S1 e S2 */
printf ("\ n string concatenada é %s \ n \ n", s1); / *Saída: S1 é anexado com S2 */
retornar 0;

Instantâneos do programa e saída:

Concatenação de duas cordas sem usar a função da biblioteca

Usando o loop “for” para copiar a segunda sequência no final da primeira string.

#incluir
#incluir
#Define BUF_SIZE 256
int main ()

char s1 [buf_size], s2 [buf_size]; /* Declare os buffers s1, s2 para ambos a string*/
int length = 0, i, j; /*Variáveis ​​necessárias para travessia de loop*/
printf ("Digite a primeira string"); / * Imprima a mensagem do usuário para inserir a primeira string */
fgets (s1, buf_size, stdin); /* String de entrada do usuário será armazenada em S1*/
S1 [strlen (s1) -1] = '\ 0';
printf ("Digite a segunda string"); / * Imprima a mensagem do usuário para inserir a Segunda String */
fgets (s2, buf_size, stdin); /* A sequência de entrada do usuário será armazenada em S2*/
S2 [strlen (s2) -1] = '\ 0';
/* Atravesse a primeira string para encontrar o comprimento de S1*/
para (i = 0; s1 [i]!= '\ 0'; i ++)

comprimento = comprimento+1;

/*O comprimento terá o final do S1, comece do comprimento e copie o S2 inteiro para S1*/
para (i = comprimento, j = 0; s2 [j]!= '\ 0'; i ++, j ++)

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

/ *Imprima o S1, resultado concatenado */
printf ("\ n string concatenada é %s \ n \ n", s1);
retornar 0;

Instantâneos do programa e saída:

Outra maneira de sem função da biblioteca

Concatenação usando recursão:

A função stringConcatenate () será usada para obter o comprimento da string1. Se S2 estiver vazio, um caractere nulo será atribuído a S2.

Se o caractere nulo não for atribuído a S2, adicionar elemento de S2 no final de S1 que é S1 [i+j] = S2 [J], isso aumenta o valor de I na string.

Uma função será chamada passando pelas cordas reformadas (S1, S2) como argumento. Será chamado repetidamente até que o S2 esteja vazio.

O S1 concatenado será impresso por main () como

#incluir
#incluir
#Define BUF_SIZE 256
/ * Função recursiva para implementar a concatenação da string conforme a descrição acima */
void stringConcatenate (char *s1, char *s2)

estático int i = 0;
estático int j;
j = strlen (s1);
se(!S2 [i])

S2 [i] = '\ 0';

outro

S1 [j] = s2 [i];
S1 [j+1] = '\ 0';
i ++;
StringCoCatenate (S1, S2);


int main ()

char s1 [buf_size], s2 [buf_size];
printf ("Digite o valor da primeira string:"); / * Mensagem do usuário para entrada 1st String */
fgets (s1, buf_size, stdin); / * Entrada do usuário First String, armazene em S1 */
S1 [strlen (s1) -1] = '\ 0';
printf ("Digite o valor da segunda string:"); / * Mensagem do usuário para entrada 2nd string */
fgets (s2, buf_size, stdin); / * Entrada do usuário First String, armazene em S2 */
S2 [strlen (s2) -1] = '\ 0';
StringCoCatenate (S1, S2); / * Chame a função com S1, S2 como parâmetros */
printf ("combinação de strings = '%s' \ n", s1);
retornar 0;

Instantâneos do programa e saída:

Concatenação usando funções

A função strConcatenate () é chamada pelo principal () para combinar duas strings.

A função recebe o comprimento de String1 usando Stringlen (String1).

Adjacente os elementos de string2 [i] em string1 [i+j]. Esta etapa será repetida até que a corda esteja vazia. Aqui, ao lado da String2 a String1 no final de String1.

String concatenada (string 1) será recebida até o final quando todas as iterações do loop serão realizadas.

O principal () imprime a string concatenada S1

#incluir
#incluir
#Define BUF_SIZE 256
/ * Função para implementar a concatenação da string conforme a descrição acima */
void strConcatenate (char *string1, char *string2)

int i;
int j = strlen (string1);
for (i = 0; string 2 [i]; i ++)

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

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

int main ()

char string1 [buf_size], string2 [buf_size];
printf ("Digite a primeira string:"); / * Mensagem do usuário para 1st String */
fgets (string1, buf_size, stdin); / * Entrada do usuário Second String, armazenada em String1 */
string1 [strlen (string1) -1] = '\ 0';
printf ("Digite a segunda sequência:"); / * Mensagem do usuário para a 2ª String */
fgets (string2, buf_size, stdin); / * Entrada do usuário Second String, armazenada em String2 */
string2 [strlen (string2) -1] = '\ 0';
strConCatenate (String1, String2); /* Ligue para a função com String1 e String2 como argumentos*/
printf ("String resultante = %s '\ n", string1);
retornar 0;

Instantâneos do programa e saída:

String Concatenation usando memcpy

Ao usar a função memcpy (), a concatenação da string é feita copiando palavras por palavra de um buffer de string até o final de outro buffer de string, onde o tamanho da palavra é 4 bytes, considerando que estamos executando em 32 bits, enquanto quando fazemos concatenação por string por string por string Usando a String Concatenation usando a função strcat (), a concatenação é feita copiando byte byte de um buffer de string para outro buffer de string.

Esta abordagem é eficiente no desempenho.

A única consideração ao usar o memcpy é cuidar de '\ 0'.

C Programa para alcançar o strcat com memcpy:

#incluir
#incluir
#Define BUF_SIZE 256
Void strcat_memcpy (char *s1, char *s2)

int length1, comprimento2;
comprimento1 = strlen (s1);
comprimento2 = strlen (s2);
Memcpy (S1+Length1, S2, Length2);

int main ()

char string1 [buf_size], string2 [buf_size];
printf ("Digite a primeira string:"); / * Mensagem do usuário para 1st String */
fgets (string1, buf_size, stdin); / * Entrada do usuário Second String, armazenada em String1 */
string1 [strlen (string1) -1] = '\ 0';
printf ("Digite a segunda sequência:"); / * Mensagem do usuário para a 2ª String */
fgets (string2, buf_size, stdin); / * Entrada do usuário Second String, armazenada em String2 */
string2 [strlen (string2) -1] = '\ 0';
strcat_memcpy (string1, string2); /* Ligue para a função com String1 e String2 como argumentos*/
printf ("String resultante = %s '\ n", string1);
retornar 0;

Instantâneos do programa e saída:

Conclusão:

Com toda essa discussão, podemos concluir a concatenação da string em c. Vimos muitos exemplos e programas de amostra para concatenação de string. Vamos lembrar os principais itens: existem duas maneiras, uma com o padrão C e outro é o caminho definido pelo usuário. O usuário definido pode ainda ser de muitos tipos, depende de como o usuário deseja implementar a concatenação da string.