Je veux écrire un programme qui obtient la première moitié d'une chaîne 'ch1' et la place dans une chaîne 'ch3' puis obtient la première moitié d'une autre chaîne 'ch2' et la concatène dans «ch3 "met est en fin de ch3" mais quand je l'exécute, il me donne une sortie bizarre .. ch3 par exemple:sortie bizarre utilisant strncpy et strncat
ch1 ="123"
ch2 ="azertyuiop"
le résultat: ch3 =" 1 < 3rdweirdletter> azert "
Ceci est mon code:
int main()
{
char ch1[200],ch2[200],ch3[200];
puts("give 'ch1' ");
gets(ch1);
puts("give 'ch2' ");
gets(ch2);
strncpy(ch3,ch1, strlen(ch1)/2);
strncat(ch3,ch2, strlen(ch2)/2);
printf("a half \"%s\" + a half \"%s\" gives \"%s\"",ch1,ch2,ch3);
return 0;
}
J'apprécierais que quelqu'un m'aide. Merci
'man strncpy': * [...] Attention: S'il n'y a pas d'octet nul parmi les n premiers octets de src, la chaîne placée dans dest ne sera pas terminée par un zéro. * – EOF
pourriez-vous expliquer une Un peu plus .. Désolé, je suis nouveau à ce –
Ne pas utiliser 'gets': http://stackoverflow.com/q/1694036/4996248 –