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.

Passo 2

Primeiro precisamos descobrir o comprimento de cada string usando
strlen. Sejam
n1 = str<=n(s1) e n2 = str<=n(s2). O tamanho do resultado será n = n1 + n2 e vamos reservar um array temporário de tamanho n+1 para comportar o ‘\0’.
Em seguida declaramos variáveis de índice i, j, k inicializadas em zero. Usamos um loop
while que continua enquanto i < n1 ou j < n2, e dentro do loop primeiro copiamos de s1[i] para temp[k] se i < n1, incrementando i e k. Depois copiamos de s2[j] para temp[k] se j < n2, incrementando j e k.

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 temp[k] = '0'.
Dessa forma a função modifica s1 in place e não precisa retornar nada (void).

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;
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);
}

Exercícios relacionados