Je ne parviens pas à créer strncpy
lorsque je veux copier 2 caractères d'une chaîne, mais le même code fonctionne lorsque je veux copier 3 caractères.C strncpy 2 char
Dans cet exemple, je dois strncpy()
stocker 12 'à' variable:
void main(){
const char* from = "12345678";
char *to = (char*) malloc(3);
strncpy(to, from, 2);
printf("%s", to);
free(to);
}
mais quand je l'utilise strncpy(to, from, 3)
avec malloc(4)
, il fonctionne bien. Toute solution pour que cela fonctionne?
Il est difficile d'offrir des solutions lorsque l'énoncé du problème est simplement «ça ne marche pas». S'il vous plaît [modifier] votre question pour donner une description plus complète de ce que vous attendiez et comment cela diffère des résultats réels. Voir [demander] pour des conseils sur ce qui fait une bonne explication. –
Il suffit de lire le document: Aucun caractère nul n'est implicitement ajouté à la fin de la destination si la source est plus longue que num. – Boiethios
Indice pour le futur: N'utilisez pas 'strncpy', la plupart du temps il ne fait pas ce que vous voulez. –