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:
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:
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:
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:
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:
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.