C 字符串追加
我想附加两个字符串。我使用了以下命令:
new_str = strcat(str1, str2);
此命令更改 str1
的值。我希望 new_str
成为 str1
和 str2
的串联,同时 str1
不被更改。
I want to append two strings. I used the following command:
new_str = strcat(str1, str2);
This command changes the value of str1
. I want new_str
to be the concatanation of str1
and str2
and at the same time str1
is not to be changed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
您还需要分配新空间。考虑以下代码片段:
您可能需要考虑稍微安全一些的
strnlen(3)
。已更新,见上文。在某些版本的 C 运行时中,
malloc
返回的内存未初始化为 0。将new_str
的第一个字节设置为零可确保它看起来像一个空字符串到 strcat。You need to allocate new space as well. Consider this code fragment:
You might want to consider
strnlen(3)
which is slightly safer.Updated, see above. In some versions of the C runtime, the memory returned by
malloc
isn't initialized to 0. Setting the first byte ofnew_str
to zero ensures that it looks like an empty string to strcat.执行以下操作:
do the following:
考虑使用伟大但未知的 open_memstream() 函数。
FILE *open_memstream(char **ptr, size_t *sizeloc);
使用示例:
如果您事先不知道要追加的内容的长度,这比管理缓冲区方便且安全你自己。
Consider using the great but unknown open_memstream() function.
FILE *open_memstream(char **ptr, size_t *sizeloc);
Example of usage :
If you don't know in advance the length of what you want to append, this is convenient and safer than managing buffers yourself.
然后,您必须先将
strncpy
str1
转换为new_string
。You'll have to
strncpy
str1
intonew_string
first then.您可以使用
asprintf
将两者连接成一个新字符串:You could use
asprintf
to concatenate both into a new string:我写了一个支持动态变量字符串追加的函数,例如PHP str追加:str + str + ...等。
I write a function support dynamic variable string append, like PHP str append: str + str + ... etc.
我需要附加子字符串来创建 ssh 命令,我用 sprintf 解决了(Visual Studio 2013)
I needed to append substrings to create an ssh command, I solved with
sprintf
(Visual Studio 2013)strcat 的手册页说 arg1 和 arg2 附加到 arg1.. 并返回 s1 的指针。如果您不想打扰 str1,str2 那么您可以编写自己的函数。
希望这能解决您的目的
man page of strcat says that arg1 and arg2 are appended to arg1.. and returns the pointer of s1. If you dont want disturb str1,str2 then you have write your own function.
Hope this solves your purpose
您可以尝试这样的操作:
有关 strncpy 的更多信息:http://www.cplusplus。 com/reference/clibrary/cstring/strncpy/
You can try something like this:
More info on strncpy: http://www.cplusplus.com/reference/clibrary/cstring/strncpy/