Faça uma função que receba duas strings e retorne a intercalação letra a letra da primeira com a segunda string. A string intercalada deve ser retornada na primeira string.
Passo 1
O enunciado pede uma função em C que receba duas strings (arrays de char) e retorne na primeira string o resultado da intercalação letra a letra entre ela e a segunda. Para isso vamos usar manipulação de strings em C: funções de
strlen, loops e
strcpy.
strlen, loops e
strcpy.
Passo 2
Primeiro precisamos descobrir o comprimento de cada string usando
strlen. Sejam
e
. O tamanho do resultado será
e vamos reservar um array temporário de tamanho
para comportar o ‘\0’.
Em seguida declaramos variáveis de índice inicializadas em zero. Usamos um loop
while que continua enquanto ou
, e dentro do loop primeiro copiamos de
para
se
, incrementando
e
. Depois copiamos de
para
se
, incrementando
e
.
strlen. Sejam
Em seguida declaramos variáveis de índice
while que continua enquanto
Passo 3
Após preencher todo o array temporário com a intercalação, colocamos para terminar a string.
Por fim, usamos
strcpy(s1, temp) para copiar o conteúdo intercalado de volta para .
Dessa forma a função modifica in place e não precisa retornar nada (void).
Por fim, usamos
strcpy(s1, temp) para copiar o conteúdo intercalado de volta para
Dessa forma a função modifica
Resposta
#include <string.h>
void intercala(char s1[], const char s2[]) {
int n1 = strlen(s1);
int n2 = strlen(s2);
int n = n1 + n2;
char temp[n + 1];
int i = 0, j = 0, k = 0;
int n1 = strlen(s1);
int n2 = strlen(s2);
int n = n1 + n2;
char temp[n + 1];
int i = 0, j = 0, k = 0;
while (i < n1 || j < n2) {
if (i < n1) {
temp[k++] = s1[i++];
}
if (j < n2) {
temp[k++] = s2[j++];
}
}
temp[k] = '\0';
strcpy(s1, temp);
}