如何为c中给定的char数组*bla分配内存?

blaarray = (char*)malloc(strlen(bla)*sizeof(bla));


blaarray = (char*)malloc(strlen(bla)*sizeof(char*));

或者两者都没有?
谢谢
**注释编辑反映愚蠢的打字我不小心把选项粘贴错了

最佳答案

如果希望blaarray与字符串bla大小相同

blaarray = malloc((strlen(bla)+1) * sizeof(char));

现在让我来解释一下。
1)要获得字符串的长度,只使用strlen()而不使用sizeof
2)必须添加1,因为返回长度时strlen()不包含\0字符
3)char*是指向char的指针,要获得char的大小,应该执行sizeof(char)
4)您需要声明blaarray,您可以这样做
char* blaarray;

5)您不需要进行malloc()的返回,请参见this
6)sizeof(char)是1,所以可以跳过。
总之,你的代码应该是这样的。
char* blaarray;
blaarray = malloc((strlen(bla)+1));

关于c - 在c中为字符串分配内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33327931/

10-11 21:56
查看更多