gpt4 book ai didi

C void函数修改指针数组

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:04 27 4
gpt4 key购买 nike

我有一个tokenize函数,我想通过这个函数修改一个char指针数组。但是经过多次尝试我没有得到结果。有人可以帮我吗?

代码如下:

void **tokenize(char **argv, char *line, int *numTokens, char *delimiter)
{
int argc = 0;
char *token = strtok(line, delimiter);
while (token != NULL)
{
argv[argc++] = token;
token = strtok(NULL, delimiter);
}
argv[argc++] = NULL;
*numTokens = argc - 1;
}

void process_cmd(char *cmdline){
char *temp[20];
int *num2;

tokenize(temp, cmdline, num2, "|");

printf("%s\n", temp[0]);
printf("%s\n", temp[1]);
printf("%d\n", *num2);

}

最佳答案

在你的process_cmd函数中,局部变量num2在定义的时候没有被初始化,你直接在调用tokenize时使用它>。并且您写入 tokenizenumTokens 指向的位置,这会导致未定义的行为。在大多数情况下,您的程序在尝试通过 numTokens 写入时会崩溃;但理论上任何事情都有可能发生。

要解决此问题,您需要将 num2 的定义更改为:

int num2;

并按如下方式调用tokenize:

tokenize(temp, cmdline, &num2, "|"); 

关于C void函数修改指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459928/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com