A implementação em C do strcpy não altera o valor da variável [duplicado]

Esta pergunta já tem uma resposta aqui:

Alterando o endereço contido pelo ponteiro usando a função 5 respostas

Então, estou tentando implementar meu próprio strcpy para entender melhor como os ponteiros funcionam em C e, até agora, estou perdida. Tentei várias abordagens diferentes, tentei usar o código da rede para talvez basear as minhas mais tarde, mas mesmo essas não funcionam.

Eu acredito que eu poderia estar chamando a função da maneira errada no método principal. Estou passando um ponteiro da variável para a função, para que a função possa alterar o valor da variável e na chamada da função, estou fornecendo o endereço do ponteiro para que o método possa obter os dados corretos. Pelo menos eu acredito que é assim que funciona, pelo que eu pude entender de qualquer forma.

Aqui estão as funções e as chamadas de método:

Chamada de função:

void my_strcpy( char *dest, const char* src ) {

dest = malloc(sizeof(src));

while ( src != '\0' ) {
  *dest = *src;
  src++;
  dest++;
 }

}

A Principal:

int main () {

const char* s = "Hello World";
char* test = 'd';

my_strcpy( &test, &s ); // Suposed to change test form d to Hello World.
printf("Changed String: " );
printf( "%c", test );


return 0;
}

PS: Tentei usar test como uma string maior que s para ver se havia um problema de alocação de memória, mas não parece ser. Qualquer ajuda é muito apreciada, pois fiquei preso por horas ...

PS: Examinei a pergunta e exemplos de como alterar a variável e posso fazer isso usando um int simples. Mas eu não posso fazer isso usando char *. Daí o post. Peço desculpas se o problema for o mesmo, mas não consigo entender o que estou fazendo de errado aqui. Por favor, tenha paciência comigo, pois sou iniciante em C.

questionAnswers(2)

yourAnswerToTheQuestion