C语言 使用 malloc() 和 realloc() 将字符串存储在数组中



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数组。

相关内容

  • 没有找到相关文章

最新更新