getWordsArray() 获取指向 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("%sn",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: %sn",splited);
return splited;
}
它似乎有效,因为它打印正确。但我得到:
EXC_BAD_ACCESS
上
strcpy(&splited[counter] , token);
任何人都可以指出我出了什么问题?
你的函数返回类型都是错误的;它需要char **
,而不仅仅是char *
。 因此,函数中的分配策略也是错误的。 您需要为存储在 char *
数组中的每个组件字分配一个char *
数组以及一个char
数组。
当您复制字符串时,例如在 strcpy(&splited[counter] , token);
上,很可能它对于目的地来说太长了。这是因为您分配的不是字符串数组,而是char
数组。