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 respostasEntã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.