簡體   English   中英

使用malloc()和realloc()將字符串存儲在數組中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM