【发布时间】:2014-08-06 21:37:27
【问题描述】:
我为 C++ 编写了这段代码(它有效):
char* ConcatCharToCharArray(char *Str, char Chr)
{
char *StrResult = new char[strlen(Str) + 2];
strcpy(StrResult, Str);
StrResult[strlen(Str)] = Chr;
StrResult[strlen(Str) + 1] = '\0';
return StrResult;
}
/* Example: String = "Hello worl"
Char = "d"
Final string = "Hello world" */
小问题是我正在 Ubuntu 中制作标准 C 程序,我需要这段代码。 并且“新”不被识别为保留字,甚至还有一个红色标记。
我试过:char *StrResult[strlen(Str) + 2],但它不起作用,因为这种方式只接受常量值。我猜“malloc”将是这里的标准 C 解决方案,我怎么能用“malloc”或任何其他方式来做到这一点?太感谢了。
【问题讨论】:
-
您将 C 与 C++ 混淆了,提示:您使用
malloc作为标签。 -
你已经给了自己答案:
malloc。 interwebz 上有大量关于如何使用它的信息 -
一个与您的问题无关的建议:请只调用一次
strlen(),将结果分配给一个变量并使用该变量,而不是从那时起额外调用strlen()。 -
只需将
new char[X]替换为malloc(X),并在顶部替换#include <stdlib.h> -
问题已经解决,谢谢大家的回复。
标签: c memory malloc arrays strlen