sou*_*zer 3 c memory arrays malloc strlen
我为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" */
Run Code Online (Sandbox Code Playgroud)
小问题是我正在Ubuntu中制作一个标准C程序,并且需要此代码。而且,“新”不会被识别为保留字,甚至在其下还会有一个红色标记。
我试过了: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;
}
Run Code Online (Sandbox Code Playgroud)
内存用完后,请致电free( StrResult )。
| 归档时间: |
|
| 查看次数: |
10671 次 |
| 最近记录: |