Implemente a função char *Metade(char*s) que cria dinamicamente uma nova string contendo apenas metade da string s.

Passo 1

Fala aí! Essa aqui é bem básica, pra testar se estamos sabendo como fazer alocação dinâmica de memória. 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 o comando malloc. Se liga como vai ficar a declaração das nossas variáveis:

Declaramos um ponteiro para char metade_de_s, que irá nos retornar a string com metade dos caracteres lá no final da função. Como não sabemos o tamanho da string que vamos reduzir à metade, vamos usar o malloc para alocar um espaço de memória suficiente para armazenar metade do tamanho da string s (strlen(s)/2).

Passo 2

Seguindo em frente, vamos usar a função strncpy para fazer quase todo o trabalho para a gente. Esse cara realiza a cópia do conteúdo de uma variável para outra, mas deve ser especificado o tamanho a ser copiado, e com uma sintaxe da seguinte forma:

strncpy(string_destino, string_origem, tamanho);

Então, nossa função fica assim:

Mandamos strncpy copiar metade da string s, de s para metade_de_s, tranquilo né?

Depois disso, não podemos esquecer de delimitar metade_de_s com o caractere \0 e retornar este cara para podermos obter seu valor quando chamarmos aa função Metade lá no main.

Resposta