我有一个函数,string_one
两个字符串,string_two
一个指向一个字符的指针。
我想到了一个将它们加在一起的方法:
while (*string_one){
string_one++;
}
*string_one = *string_two;
但我在输出中看不到第二个字符串!
如何添加两个字符串? 我接近了吗?
当你写的时候
*string_one = *string_two;
您只是复制一个字符,因为您正在取消引用字符指针
要相互添加两个字符串,您需要覆盖第一个字符串上的 \0,然后附加第二个字符串中的字符(前提是您有足够的空间这样做)。
所以这个
while (*string_one) {
string_one++;
}
*string_one = *string_two;
只会用 string_two 中的第一个字符覆盖 \0,这将导致第一个字符串不再以 null 结尾。
相反,你应该再次做类似的事情,比如
while (*string_one) {
string_one++;
}
while (*string_two) {
*string_one++ = *string_two++;
}
*string_one = ' ';
同样,前提是string_one最初指向一个足够大的字符串来容纳两个字符串。
你试过你的代码吗?
首先,您需要确保两个字符串都有足够的空间。连接字符串而不检查两者是否有足够的空间可能是世界上 50% 的计算机被黑客入侵的原因。
其次,C 字符串是一个字符数组,最后一个字符为零字节。代码用string_two的第一个字符覆盖string_one末尾的零字节。
第三,标准 C 库中有一个名为 strcat 的函数,可以执行您想要执行的操作。它不会检查是否有足够的空间,您必须在通话前执行此操作。
恐怕
你的代码是无效的。
*string_one = *string_two;
将string_two
的第一个元素复制到string_one
。这永远不会增加任何东西。此外,您需要附加完整的字符串,而不仅仅是一个元素。
你需要的是strcat()
.您可以在此处找到更多信息。
一般说明:
strcat()
函数将src
字符串追加到dest
字符串中,覆盖dest
末尾的终止空字节(