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

标签 c

我的代码工作正常,只是实现另一个部分的问题。是否可以获取 token 中的所有字符串指针并将它们连接到另一个数组的一个索引中?例如,有另一个名为 *array1[32] 的数组或指针数组,它将 token 的所有“串联”存储到 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;

最佳答案

如果我理解你的问题,你想将所有标记复制到一个不带空格的新字符串中。如果这就是你想要的,你可以做这样的事情。首先像这样声明你的 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);

需要注意的一件事是验证您的标记化是否可以处理没有空格的情况。

关于将字符串指针数组组合成一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52616639/

相关文章:

c - 多管道不起作用

c - 如何在 C 语言中的 char* argv[] 数组末尾追加一个值?

c - 检测 IP 是静态的还是从 busybox 上的 DHCP 获得的

c - 函数指针使用中的不兼容指针类型分配

c - 10 元素数组

c - 对库包含的函数的 undefined reference

c - 是否可以释放在 printf 内部调用的函数(仅)的返回值(在 c 中)?

有人可以帮我解释一下这个递归函数吗?

c - 使用 strcat 附加空格。编译但覆盖字符串

c - typedef 指针是如何工作的