首页 > 解决方案 > 在这个例子中如何修改我的指针值?

问题描述

我试图沿着我的 char 数组(一个字符串)移动我的 char 指针,它不起作用,我不明白为什么。

我的 char 数组看起来像这样"5,true,-12,..."

这是我的代码:

local_length = get_param_length(jump_next_param(param));

以我给出的示例为例,在我写的行之前,local_length = 1(5 长度)。在我写的那行之后,local_length = 4(真实长度)。

但是参数仍然指向 5 我希望它指向 t

这是 jump_next_param() 的代码:

static char* jump_next_param(char *param){
    uint32_t jump_length = get_param_length(param);
    param += jump_length + 1;
return param;}

标签: cstringparsingpointers

解决方案


你在这里真正遇到的是一个 XY 问题。您需要帮助从逗号分隔的列表中解析单个项目。如果您不必担心包含逗号的引号括起来的字符串,则可以使用strchr

char *list = "first,second,third,fourth,fifth";
char *p = list;
char *q = list;

do
{
    p = strchr(q, ',');
    printf("%.*s\n", (ptrdiff_t)(p - q), q);
    q = p;
    p++, q++;
}
while (p != NULL);

推荐阅读