我一直在努力解决在将字符串内容拆分为较小子字符串后输出字符串内容的代码位。
分割字符串的部分或多或少地按预期工作。我正在努力的是从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;
}
以下代码输出:
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 ��]�
First element
的第一次出现由this
字符串继续,这是预期的。虽然我无法在split
函数之外正确输出第一个元素的内容。
我做错了什么?我们非常感谢能够指出问题根源的一点建议。