初学者
这绝对令我感到愤怒,我如何创建一个包含字符串长度/数量未知的字符串的数组?我基本上想要创建一个字典
array[0] = "word"
array[1] = "word2"
array[2] = "word3"
等等
我试过了:
array** = malloc(INIT); where init was defined as 10
memset(array, '\0', 10)
然后,在一个循环
array[i] = malloc(INIT)
array[i] = string from another source ( array2[i] ) (array2 is a char*)
但是这只会给出错误/垃圾文本,我不知道如何将字符串分配给数组
我很难理解指针/术语,我已经查看了所有相似的问题,无法理解任何答案。
答案 0 :(得分:0)
尝试这样做 -
int main(){
int i;
char *arr[10];
for(i=0;i<10;i++){
char str[1000];
scanf("%s", str);
arr[0] = (char*) malloc(strlen(str));
strcpy(arr[0], str);
}
return 0;
}
答案 1 :(得分:0)
您可以动态创建指向字符串的指针数组,从而保持其灵活性:
char** array = malloc(sizeof(char*)*n); // allocates an array of char* pointers
如果以后需要扩展数组,请使用realloc
char** newarray = realloc(array,sizeof(char*)*(n+1));
if (newarray != NULL)
{
array = newarray;
...
}
您还必须记住为指针指向存储字符串的位置分配空间
array[i] = strdup("blabla");
或
array[i] = malloc(strlen("blabla")+1);
strcpy(array[i], "blabla" );