【发布时间】:2017-03-04 13:56:32
【问题描述】:
我想编写一个程序,它获取字符串 'ch1' 的前半部分并将其放入字符串 'ch3' 然后获取另一个字符串 'ch2' 的前半部分并将其连接到 'ch3' “puts is在 ch3 的末尾”但是当我执行它时,它给了我奇怪的 ch3 输出 .. 例如:
ch1 ="123"
ch2 ="azertyuiop"
结果: ch3 ="1azert"
这是我的代码:
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 中的字符串不会以空字符结尾。我> -
能否请您多解释一下.. 抱歉,我是新手
-
不要使用
gets:stackoverflow.com/q/1694036/4996248 -
我确实用 scanf("%s",
);问题依然存在 -
@SamiBenAbderazak
scanf%s与gets有完全相同的问题。不要使用它。