将字符串指针数组组合成一个数组

时间:2018-10-02 21:26:45

标签: c

我的代码可以正常工作,这只是实现另一部分的问题。是否可以使用令牌中的所有字符串指针并将它们串联到另一个数组的一个索引中?例如,有另一个名为* array1 [32]的指针数组或指针数组,如果有意义的话,可以将标记的所有“串联”存储到array1的索引之一中。

 printf("Enter text:\n");
 while((ch = getchar()) != '\n')
     str[i++] = ch;

 str[i] = '\0';
 i = 0;

 int spaces = 0;
 for(int counter = 0; counter < strlen(str) + 1; counter++){
     if(str[counter] == ' '){
         spaces++;
     }
 }

 cmd = strtok(str, " ");
 while(n <= spaces + 1 && (act_token = strtok(NULL, " "))){
     token[n] = act_token;
     n++;
 }
 token[n] = NULL;
 n = 1;

1 个答案:

答案 0 :(得分:0)

如果我理解您的问题,您想将所有标记复制到一个没有空格的新字符串中。如果那是您想要的,则可以执行以下操作。首先像这样声明您的array1:

char *array1;

然后在初始循环之后为它分配内存,然后重置i

array1 = malloc(i + 1);

然后在标记化之后,可以复制字符串:

            strcpy(array1, cmd);
            for (i = 0; i < spaces; i++) {
                    strcat(array1, token[i]);
            }
            printf("concat: %s\n", array1);

需要注意的一件事是验证您的令牌化处理了没有空格的情况。