【发布时间】:2010-10-14 08:41:28
【问题描述】:
我正在编写一个 C 程序,它接受 n 字符串并使用 strcat 将它们连接起来。
首先,我将目标字符串分配在sizeof(char)* 每个字符串的strlen + 1(对于空字符)。然后使用 for 我使用 strncat 创建最终字符串。
在 and 处,我添加了空字符。
一切正常,但有时,在目标字符串的开头,有一些奇怪的字符(例如,'?')。这发生在程序执行期间,最终字符串比以前短(在相同执行期间)。
我有什么遗漏吗?
这是代码:
size = 0;
for(i = 0; i < n; i++) {
size += sizeof(char)*(strlen(strings[i]));
}
size++;
target = malloc(size);
if(!target) { /** Error handling... */ }
for(i = 0; i < n; i++) {
target = strncat(target, strings[i], strlen(strings[i]));
}
target[size] = '\0';
谢谢,
——多诺万
【问题讨论】:
-
如何将第一个字符串实际放入目标字符串中?
-
对不起。现在也有代码了。
-
另外你不需要将strncat的返回值收集回target。
标签: c string concatenation