我目前正在尝试将程序从VB6移植到简单C.许多函数使用&
运算符的多个实例来连接这样的字符串:
(VB6代码)
Public Function myFunc (myString As String) As String
Dim myNewString As String
myNewString = globalString & myString
myFunc = myNewString
End Function
背后的意图是将不同的字符串连接在一起。这是在代码中多次完成的。
我目前正在仿效这样的行为:
sprintf(myString, "%s%s", myString, newString);
字符串声明如下:
char myString[500] = {};
char newString[100] = {};
非常重要的是要注意,我的连接操作永远不会超过字符串的最大长度,因为这对于该程序处理的任何场景都是不可能的。
我现在的问题是:
char
数组的最大长度,这是一种安全且有效的方法来模拟此操作(到目前为止,我还没有遇到过生产测试中的任何问题)答案 0 :(得分:3)
1。 [...]这是一种安全且有效的模拟此操作的方法(到目前为止,我还没有遇到过生产测试中的任何问题)
不,一点也不。你的代码,
var url = '@Url.Action("ViewOptionvalues", "Options")';
$('.view').click(function() {
var nextRow = $(this).closest('tr').next('tr');
$.get(url, { id: $(this).data('id') }, function(response) {
nextRow.find('div').html(response);
nextRow.toggle();
});
})
如sprintf(myString, "%s%s", myString, newString);
标准中所述,章节§7.21.6.6,C11
函数
[...]如果在重叠的对象之间进行复制,则行为未定义。
然后,
2。有没有更好的方法来做到这一点?
是的,当然。您应该使用strcat()
来连接字符串。
答案 1 :(得分:1)
如果目标字符串足够大且已包含有效的以null结尾的字符串,则只需使用strcat
。
strcat(myString, newString);