[英]Using malloc() and realloc() to store strings in an Array
getWordsArray()獲取一個指向char數組的指針-輸入。
我試圖拆分輸入並將每個單詞存儲在char數組中。 並最終返回該char數組。
char *getWordsArray(char *input)
{
char *token;
char *search = " ,";
char *splited, *temp;
int counter=0;
splited = malloc(sizeof(char)*15);
token = strtok (input,search);
while (token != NULL ) {
printf("%s\n",token);
token = strtok (NULL,search);
// splited[counter] = *token; //aliasing ?
strcpy(&splited[counter] , token);
temp= realloc(splited,(counter+1)*sizeof(token));
if (temp !=NULL) {
splited = temp;
} else{
free(splited);
printf("Error allocating memory!\n");
return 0 ;
}
counter++;
}
printf("list is: %s\n",splited);
return splited;
}
由於可以正確打印,因此似乎可以正常工作。 但是我得到:
EXC_BAD_ACCESS
上
strcpy(&splited[counter] , token);
任何人都可以指出我有什么問題嗎?
您的函數返回類型都是錯誤的; 它必須是char **
,而不僅僅是char *
。 因此,功能中的分配策略也是錯誤的。 您需要為存儲在char *
數組中的每個組成詞分配一個char *
數組以及一個char
數組。
當您復制字符串時,例如在strcpy(&splited[counter] , token);
,很可能目的地太長了。 那是因為您沒有分配一個字符串數組,而是一個char
數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.