Enviado em 30/11/2021 - 22:53h
Boa Noite a todos.
Baseado em uma pergunta anterior que fiz, e tentando buscar uma forma de aprender a encontrar as funções existentes em C, surgiu essa dúvida!
No Site: https://elixir.bootlin.com/glibc/latest/A/ident/strcat
Tive dificuldades de saber afinal onde estava de fato a strcat
Penso ter achado ela aqui: https://elixir.bootlin.com/glibc/latest/source/string/strcat.c#L20
Imaginando que o código acima seja de verdade a strcat, Me surpreendeu bastante a strcat ser na verdade uma strcpy!
Então tentando fazer o código acima funcionar, e claro com alguma dificuldade montei o exemplo abaixo!
Repare que precisei colocar: char * Mas não sei se minha escolha é a correta!
Escolhi char com um ponteiro, por tratar-se de um vetor char de caracteres.
Minha dúvida de fato é: A função que eu montei é a strcat verdadeira? A que usamos normalmente em C?
Baseado em uma pergunta anterior que fiz, e tentando buscar uma forma de aprender a encontrar as funções existentes em C, surgiu essa dúvida!
No Site: https://elixir.bootlin.com/glibc/latest/A/ident/strcat
Tive dificuldades de saber afinal onde estava de fato a strcat
Penso ter achado ela aqui: https://elixir.bootlin.com/glibc/latest/source/string/strcat.c#L20
#undef strcat
#ifndef STRCAT
# define STRCAT strcat
#endif
/* Append SRC on the end of DEST. */
char *
STRCAT (char *dest, const char *src)
{
strcpy (dest + strlen (dest), src);
return dest;
}
libc_hidden_builtin_def (strcat)
Imaginando que o código acima seja de verdade a strcat, Me surpreendeu bastante a strcat ser na verdade uma strcpy!
Então tentando fazer o código acima funcionar, e claro com alguma dificuldade montei o exemplo abaixo!
#include <stdio.h>
#include <string.h> // strlen
char *MyStrcat(char *dest, const char *src) {
strcpy (dest + strlen(dest), src);
return dest;
}
int main() {
char Text[80] = {0};
MyStrcat(Text,"Viva");
MyStrcat(Text," o ");
MyStrcat(Text,"Linux");
puts(Text);
}
Repare que precisei colocar: char * Mas não sei se minha escolha é a correta!
Escolhi char com um ponteiro, por tratar-se de um vetor char de caracteres.
Minha dúvida de fato é: A função que eu montei é a strcat verdadeira? A que usamos normalmente em C?