C String Concatenation

C String Concatenation



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

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







Protótipo de função:

$Caracteres * strcat (str1,str2);

onde str1 é a primeira string e str2 é a segunda string. O valor de retorno da função é o ponteiro para a string 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,primeira corda será

str1 Bella Whitmann
str2 Whitmann

enquanto string2 permanecerá o mesmo.





Exemplo 2:

$ strcat (str2,str1);
onde str1 é Bella
str2 é Whitmann

após concatenação de string,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 manipulação 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 a concatenação de strings de duas maneiras. Um é usar a função de biblioteca C padrão e outro é sem usar a função de biblioteca C. A seguir estão programas de exemplo para demonstrar as duas maneiras. A concatenação de strings sem usar a função de biblioteca C pode ser implementada de várias maneiras.

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

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

#incluir

#incluir

# define BUF_SIZE 256
inta Principal()
{
CaracteresS1[BUF_SIZE],S2[BUF_SIZE]; / * Dois buffers de string * /

printf ('Digite a primeira string n'); ] / * Imprimir mensagem para o console para o usuário inserir a 1ª string * /
fgets (S1,BUF_SIZE,Stdin); / * armazena a string de entrada do usuário no buffer S1 * /
S1[ Strlen (S1)-1] = ' 0';

printf ('Digite a segunda string n');/ * Imprimir mensagem para o usuário inserir a 2ª string * /
fgets (S2,BUF_SIZE,Stdin); / * armazena a string de entrada do usuário no buffer S2 * /
S2[ Strlen (S2)-1] = ' 0';

strcat (S1,S2); / * Chame a função padrão com as strings S1 e S2 * /

printf (' nA string concatenada é% s n n',S1); / * Saída: S1 é anexado a S2 * /

Retorna 0;
}

Instantâneos do programa e saída:

Descrição de texto gerada automaticamente

Descrição de texto gerada automaticamente com confiança média

Concatenação de duas strings sem usar a função de biblioteca

Usando o loop for para copiar a segunda string no final da primeira string.

#incluir

#incluir

# define BUF_SIZE 256
inta Principal()
{
CaracteresS1[BUF_SIZE],S2[BUF_SIZE]; / * Declara os buffers S1, S2 para ambos os strings * /
intcomprimento= 0,eu,j; / * Variáveis ​​necessárias para travessia de loop * /

printf ('Digite a primeira string'); / * Imprimir mensagem do usuário para inserir a primeira string * /
fgets (S1,BUF_SIZE,Stdin); / * a string de entrada do usuário será armazenada em S1 * /
S1[ Strlen (S1)-1] = ' 0';

printf ('Digite a segunda string'); / * Imprimir mensagem do usuário para inserir a segunda string * /
fgets (S2,BUF_SIZE,Stdin); / * a string de entrada do usuário será armazenada em S2 * /
S2[ Strlen (S2)-1] = ' 0';
/ * Percorra a primeira string para encontrar o comprimento de S1 * /
para(eu=0;S1[eu]! =' 0';eu++)
{
comprimento=comprimento+1;
}

/ * comprimento terá o fim de S1, começa a partir de comprimento e copia todo S2 em S1 * /
para(eu=comprimento,j=0;S2[j]! =' 0';eu++,j++)
{
S1[eu]=S2[j];
S1[eu]=' 0';
}

/ * Imprime o S1, resultado concatenado * /
printf (' nA string concatenada é% s n n',S1);
Retorna 0;
}

Instantâneos do programa e saída:

Descrição de texto gerada automaticamente

Descrição de texto gerada automaticamente

Outra maneira de sem função de 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, então adicione o 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 a si mesma passando as strings reformadas (S1, S2) como um argumento. Ele será chamado repetidamente até que 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 de string de acordo com a descrição acima * /
vaziostringconcatenate(Caracteres *S1,Caracteres *S2)
{
estático inteu=0;
estático intj;
j= Strlen (S1);
E se(!S2[eu])
{
S2[eu]=' 0';
}
outro
{
S1[j] =S2[eu];
S1[j+1] = ' 0';
eu++;
stringconcatenate(S1,S2);
}
}
inta Principal()
{
CaracteresS1[BUF_SIZE],S2[BUF_SIZE];

printf ('Insira o valor da primeira string:'); / * mensagem do usuário para inserir a 1ª string * /
fgets (S1,BUF_SIZE,Stdin); / * primeira string de entrada do usuário, armazenar em S1 * /
S1[ Strlen (S1)-1] = ' 0';

printf ('Insira o valor da segunda string:'); / * mensagem do usuário para inserir a 2ª string * /
fgets (S2,BUF_SIZE,Stdin); / * primeira string de entrada do usuário, armazenar em S2 * /
S2[ Strlen (S2)-1] = ' 0';

stringconcatenate(S1,S2); / * Chame a função com S1, S2 como parâmetros * /

printf ('combinação de strings ='% s ' n',S1);
Retorna 0;
}

Instantâneos do programa e saída:

Descrição de texto gerada automaticamente

Descrição de texto gerada automaticamente

Concatenação usando funções

A função strconcatenate () é chamada por main () para combinar duas strings.

A função obtém o comprimento de string1 usando stringlen (string1).

Junte os elementos da string2 [i] na string1 [i + j]. Esta etapa será repetida até que a string esteja vazia. Aqui, juntamos a string2 à string1 no final da string1.

String concatenada (string 1) será recebida no final quando todas as iterações do loop for forem realizadas.

O main () imprime a string concatenada S1

#incluir

#incluir

# define BUF_SIZE 256

/ * função para implementar a concatenação de string de acordo com a descrição acima * /
vazioestrconcatenato(Caracteres *string1, Caracteres*string2)
{
inteu;
intj= Strlen (string1);
para(eu=0;fragmento2[eu];eu++)
{
string1[eu+j]=string2[eu];
}
string1[eu+j]= ' 0';
}
inta Principal()
{
Caracteresstring1[BUF_SIZE],string2[BUF_SIZE];
printf ('Digite a primeira string:'); / * Mensagem do usuário para a 1ª string * /
fgets (string1,BUF_SIZE,Stdin); / * Segunda string de entrada do usuário, armazenada em string1 * /
string1[ Strlen (string1)-1] = ' 0';

printf ('Digite a segunda string:'); / * Mensagem do usuário para a 2ª string * /
fgets (string2,BUF_SIZE,Stdin); / * Segunda string de entrada do usuário, armazenada em string2 * /
string2[ Strlen (string2)-1] = ' 0';

estrconcatenato(string1,string2); / * Chame a função com string1 e string2 como argumentos * /

printf ('String resultante =% s' n',string1);
Retorna 0;
}

Instantâneos do programa e saída:

Descrição de texto gerada automaticamente

Descrição de texto gerada automaticamente

Concatenação de strings usando memcpy

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

Essa abordagem é eficiente em termos de desempenho.

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

Programa C para alcançar o strcat com memcpy:

#incluir

#incluir

# define BUF_SIZE 256

Nulo strcat_memcpy(Caracteres *S1, Caracteres *S2)
{
intcomprimento1,comprimento 2;
comprimento1= Strlen (S1);
comprimento 2= Strlen (S2);
memcpy (S1+comprimento1,S2,comprimento 2);
}
inta Principal()
{

Caracteresstring1[BUF_SIZE],string2[BUF_SIZE];
printf ('Digite a primeira string:'); / * Mensagem do usuário para a 1ª string * /
fgets (string1,BUF_SIZE,Stdin); / * Segunda string de entrada do usuário, armazenada em string1 * /
string1[ Strlen (string1)-1] = ' 0';

printf ('Digite a segunda string:'); / * Mensagem do usuário para a 2ª string * /
fgets (string2,BUF_SIZE,Stdin); / * Segunda string de entrada do usuário, armazenada em string2 * /
string2[ Strlen (string2)-1] = ' 0';

strcat_memcpy(string1,string2); / * Chame a função com string1 e string2 como argumentos * /

printf ('String resultante =% s' n',string1);
Retorna 0;


}

Instantâneos do programa e saída:

Descrição de texto gerada automaticamente

Descrição de texto gerada automaticamente

Conclusão:

Com toda essa discussão, podemos concluir a concatenação de strings em C. Vimos muitos exemplos e programas de amostra para concatenação de strings. Vamos relembrar os itens principais: Existem duas formas, uma com o padrão C e outra definida pelo usuário. Definido pelo usuário pode ainda ser de muitos tipos, depende de como o usuário deseja implementar a concatenação de string.