在C语言中获取变量值

在C语言中获取变量值,c,string,C,String,我一直在努力处理一个代码位,在它被分割成一个较小的子字符串后输出字符串内容 拆分字符串的部分的工作方式与预期的大致相同。我正在努力解决的问题是,当数组内容从split函数返回时捕获数组内容 请参阅说明问题的模拟代码: #include <stdio.h> #include <string.h> #include <stdlib.h> char **split(const char *string, const char *delimiter) { p

我一直在努力处理一个代码位,在它被分割成一个较小的子字符串后输出字符串内容

拆分字符串的部分的工作方式与预期的大致相同。我正在努力解决的问题是,当数组内容从
split
函数返回时捕获数组内容

请参阅说明问题的模拟代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char **split(const char *string, const char *delimiter)
{
    printf("String length %zu\n", strlen(string));
    char *params[strlen(string)];
    char input[strlen(string)];

    strcpy(input, string);

    int i = 0;

    params[i] = strtok(input, delimiter);
    printf("Chunk %d = %s\n", i, params[i]);

    while(params[i] != NULL) {

        char *chunk = strtok(NULL, delimiter);

        params[++i] = chunk;

        printf("Chunk %d = %s\n", i, params[i]);
    }

    size_t size = sizeof(char **) * (i + 1);

    printf("Size %zu\n", size);

    char **destination = malloc(size);
    memcpy(destination, params, size);

    printf("First element %s\n", *destination);

    return destination;
}

char **function() 
{
  return split("this is a test", " ");
}

void read(char **elements) 
{
  printf("First element %s\n", *elements);

  char *b = *elements;

  printf("First element %s\n", b);
}

int main(void) 
{  
  char **elements = function();

  printf("First element %s\n", *elements);

  read(elements);

  printf("First element %s\n", *elements);

  return 0;
}
第一次出现
第一个元素
后是
这个
字符串,这与预期一致。虽然我不能正确地输出
split
函数之外的第一个元素的内容


我做错了什么?如果您能给我一点建议,指出问题的根源,我将不胜感激。

您调试过吗?@t0mm13b我已经尝试过在Linux上用DDD调试它。它一直在崩溃,所以我无法真正正确地调试程序。我将在X代码中再试一次。char输入[strlen(string)];strcpy(输入,字符串)越界写入。@EOF您认为这是根本原因吗?如果仔细观察,则在
split
函数中正确打印出块。我的问题集中在
main
read
function
函数中的变量输出上。我怀疑我以错误的方式使用了指针。@dummy:我没有在显示未定义行为的程序中搜索“根本原因”。它可以做任何它想做的事。
String length 14
Chunk 0 = this
Chunk 1 = is
Chunk 2 = a
Chunk 3 = test
Chunk 4 = (null)
Size 40
First element this
First element ��]�
First element �]�
First element �]�
First element ��]�