Implemente a função char *Repete(char *string, int n) que cria dinamicamente uma nova string com n “cópias” da string original, separadas por espaço, exceto a última ocorrência.

Repete(“Olá”, 4) → “Olá Olá Olá Olá

Passo 1

Fala aí! Essa aqui vai dar certo trabalhinho, mas me acompanha de perto que no final vai dar tudo certo. Se liga, vamos começar declarando nossas variáveis da seguinte forma:

Não assusta ainda não. Nós declaramos a variável i, que será usada para percorrer pelas strings, e um ponteiro para char copia, o qual será usado para retornar a string com cópias lá no final. Perceba que, como insinuado pelo enunciado, devemos criar uma string dinâmica, o que isso quer dizer?

Bom, quando declaramos uma string, geralmente precisamos informar seu tamanho, no entanto, em casos como esse, dependemos do usuário para nos informar qual será esse tamanho. Portanto, declaramos uma string de forma dinâmica para que seu tamanho seja definido no decorrer da execução do programa.

E para fazer isso, usamos aquele comando malloc. Com isso, dizemos para alocar um tamanho para copia igual a pelo menos n vezes o tamanho da string string (strlen(string)), pois sabemos, com certeza, que esse será seu tamanho, apesar de não sabermos exatamente quanto isso vale.

Passo 2

Beleza, seguindo em frente, vamos definir copia como vazio, colocando o caractere delimitador \0 como seu primeiro e único caractere (isso é o equivalente a fazermos uma variável inicialmente igual a zero, por exemplo, int i = 0). Vamos, depois, abrir um laço for da seguinte forma:

Aqui, utilizamos i variando de 0 até n para copiar a string de entrada o número de vezes desejado. E utilizamos a função strcat para justapor as strings string e copia. Como queremos separar cada repetição por um espaço em branco, chamamos strcat novamente, desta vez, com o caractere , ou “ “, e a string copia. Efetivamente, como definimos copia como vazia, estamos copiando string para copia e adicionando um espaço ao final, e fazemos isso um total de n vezes!

Para finalizar, basta retornar a string copia, para podermos obter seu valor quando chamarmos a função Repete lá no main.

Resposta