我有char * lines [1000]字符串,可以容纳1000个字符。如何创建该字符串的100个数组。这段代码我收到错误。
char * lines[1000];
lines = (lines*)malloc(100 * sizeof(lines));
main.c:19:20:错误:')'令牌之前的预期表达式
答案 0 :(得分:3)
最简单的方法是:
char lines[100][1000];
可替换地:
char* lines[100];
int i;
for (i = 0; i < 100; i++) {
lines[i] = malloc(1000);
}
...
for (i = 0; i < 100; i++) {
free(lines[i]);
}
后者更灵活 - 只需稍加修改 - 它允许您为每个字符串分配不同的内存量。
答案 1 :(得分:3)
看起来你想要一个数组字符串,每个字符串最多包含1000个字符。您的代码存在一些问题。
你已经声明了一个char *
的数组,但你真正想要的是一个指向char
数组的指针。为此,您的声明应该是
char (*lines)[1000];
另一方面,你不应该忘记字符串末尾的NULL
字节,而应该改为声明
char (*lines)[1001];
要设置指针,您需要使用
lines = (char (*)[1001]) malloc(100 * sizeof(char[1001]));
或
lines = (char (*)[1001]) malloc(100 * sizeof(*lines));
后者正常工作,因为lines
指向char
s的数组,*lines
是 a char[1001]
。请记住确保没有得到NULL
指针。
最后,你应free
malloc
使用<{p>
free(lines);
答案 2 :(得分:1)
您可以将for循环写为:
char * lines[1000];
int i = 0;
for (i = 0; i < 1000; i++)
{
lines[i] = (char*)malloc(100 * sizeof(lines));
}
不要忘记释放所有指针所指向的内存
for (i = 0; i < 1000; i++)
{
free(lines[i])
}
答案 3 :(得分:0)
为什么不创建二维数组?