初学者在这里
这绝对激怒了我,我如何创建一个包含字符串的数组,而字符串的长度/数量是未知的?我本质上是想创建一个字典,其中
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*)但这只会给出错误/垃圾文本,并且我不知道如何将字符串分配给数组
一般来说,我很难理解指针/行话,我看过所有类似的问题,但没有一个答案。
发布于 2015-10-15 13:32:54
试着这样做-
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;
}发布于 2015-10-15 13:33:09
您可以动态创建一个指向字符串的指针数组,并以这种方式保持其灵活性:
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" );https://stackoverflow.com/questions/33140530
复制相似问题