在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));
如何在 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));