Je suis sûr que la question suivante a été beaucoup posée, mais je vais demander btw parce que je n'ai pas encore trouvé la réponse.vérifier la taille du tampon/strncpy
Je dois recréer la fonction strncpy (je n'ai besoin d'aucune solution à ce sujet) et je ne peux pas reproduire un comportement exact de cette fonction.
Ceci est mon code:
int main(void)
{
char dest1[15];
char dest2[15];
char *src = "abcdefgh";
size_t n = 16;
putstr(strncpy(dest1, src, n);
// the output is : [1] 23975 abort ./a.out
putstr(ft_strncpy(dest2, src, n);
// the output is : abcde[1] 23975 abort ./a.out
return (0);
}
Je pense que la fonction strncpy vérifier la taille de la mémoire tampon de dest1 et le comparer avec n avant que quelque chose de retour.
La fonction ft_strncpy est ma fonction, la copie de strncpy.
Comment puis-je vérifier la taille du tampon dest2 dans ma fonction? Cela n'a pas fonctionné avec dest2 ++ (boucle infinie) ou dest2 [index] (return 0);
Modifier: Suppression des étoiles de dest1 ans dest2. Et une explication supplémentaire de ce qu'est ft_strncpy.
Le code que vous montrez est problématique, non pas parce qu'il y a un problème avec la fonction 'strncpy', mais avec les deux tableaux. Vous avez deux tableaux de * pointeurs * à 'char'. En d'autres termes, vous n'avez pas deux tableaux qui peuvent être utilisés comme chaîne, mais deux tableaux * de * chaînes (ou plutôt des chaînes potentielles). –
arf, exactement ... grosse erreur. Je vous remercie ! –
ok, donc c'est char dest [15] dans mon code, mauvaise copie de moi. Désolé –