在c中为字符串分配内存?

Allocating Memory for string in c?

如何在 c 语言中为给定的字符数组 *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() 不包含 [=19=] 字符而 return 长度

3) char* 是指向 char 的指针,要获得 char 的大小,应该做 sizeof(char)

4) 当然你需要声明 blaarray,你可以这样做

char* blaarray;

5) 你不需要投malloc()的return,见this.

6) sizeof(char) 是 1,所以你可以跳过它。

所以,总而言之,您的代码应该如下所示。

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