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);
任何人都可以指出我的错误吗?
答案 0 :(得分:2)
你的函数返回类型都错了;它必须是char **
,而不仅仅是char *
。因此,函数中的分配策略也是错误的。您需要为char *
数组中存储的每个组成单词分配一个char
数组和一个char *
数组。
答案 1 :(得分:1)
复制字符串时,例如在strcpy(&splited[counter] , token);
,很可能,目的地太长了。那是因为你没有分配一个字符串数组,而是一个char
的数组。