-3
我想编写一个程序,获取字符串'ch1'的前半部分并将其放入字符串'ch3'中,然后获取另一个字符串'ch2'的前半部分并将其连接'CH3' “把在CH 3的端部”,但是当我执行它,它给我要CH3怪异输出.. 例如:使用strncpy和strncat的奇怪输出
ch1 ="123"
ch2 ="azertyuiop"
结果: CH3 =“1 < 3rdweirdletter> azert “
这是我的代码:
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;
}
如果有人帮助我,我将不胜感激。 感谢
'man strncpy':* [...]警告:如果在src的前n个字节中没有空字节,则 放置在dest中的字符串不会以null结尾* – EOF
请您解释一下更多.. 对不起,我对此感兴趣 –
请勿使用'gets':http://stackoverflow.com/q/1694036/4996248 –