我有为 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 程序,我需要这段代码。 并且“new”没有被识别为保留字,它下面甚至有一个红色标记。
我试过:char *StrResult[strlen(Str) + 2]
,但它不起作用,因为这种方式只接受常量值。我猜“malloc”将是这里的标准 C 解决方案,我怎么能用“malloc”或任何其他方式做到这一点呢?太感谢了。
最佳答案
new
是分配内存的 C++ 方式。在 C 中你是对的,你需要使用 malloc
。
char* ConcatCharToCharArray(char *Str, char Chr)
{
size_t len = strlen( Str );
char *StrResult = malloc( len + 2 );
/* Check for StrResult==NULL here */
strcpy(StrResult, Str);
StrResult[len] = Chr;
StrResult[len+1] = '\0';
return StrResult;
}
当你用完内存后,你会调用free( StrResult )
。
关于c - 如何在标准 C 中创建一个新的 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24254243/