你能告诉我在这里做错了什么吗?打印printf("%s\n",text[0]);
我创建了char **text;
和malloc
所有指针。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char **text;
int main()
{
int i;
text = malloc(20000);
for(i=0; i < 20000; i++) {
text[i] = malloc(4);
memcpy(text[i], "test",4);
}
printf("%s\n",text[0]);
printf("%s\n",text[1]);
}
答案 0 :(得分:2)
我相信你正在寻找这样的东西:
int numElements = 20000, i;
// Allocate an array of char pointers
text = malloc(numElements * sizeof( char *));
for( i = 0; i < numElements; i++) {
// 4 for the length of the string "test", plus one additional for \0 (NULL byte)
text[i] = malloc( (4 + 1) * sizeof( char));
memcpy( text[i], "test\0", 5);
}
这是online demo显示它正常工作,因为它产生输出:
test
test
答案 1 :(得分:1)
for(i=0; i < 20000/sizeof(char*); i++) {
text[i] = malloc(5);
memcpy(text[i], "test",5);
}