将字符串更改为指向函数中的下一个字符

时间:2016-07-10 11:59:34

标签: c string

#include <stdio.h>


void change(char *str)
{
    (*str++);
    return;
}

int main()
{
    char *str = "ABC";
    printf("before change %s \n",str);
    change(str);
    printf("after change %s \n",str);
    return 0;
}

该计划的输出是

ABC
ABC

我希望输出

ABC
BC

我不想返回字符串,str需要在change函数中修改;返回类型的更改函数应保持无效。我不知道该怎么做。

我确实尝试谷歌但我没有找到解决方案。

3 个答案:

答案 0 :(得分:4)

在C中,如果要将参数的值更改为函数,则需要通过指针获取该参数。因为在这里你试图改变一个指针,它需要是一个指向指针的指针:

void change(char **str)
{
    (*str)++;
}

然后:

change(&str);

答案 1 :(得分:0)

表达式(*str++);会从str增加str的本地副本,而非main。这是因为C对函数参数使用按值传递技术。

您需要更改函数以获取指针指针,并将指针传递给str以获得所需效果。

答案 2 :(得分:0)

因为我们在C中你需要一个指向指针的指针。

void change(char **str) 
{
    *str = *str + 1;
}

然后

int main()
{
    char *str = "ABC";
    printf("before change %s \n",str);
    change(&str);
    printf("after change %s \n",str);
    return 0;
}

请参阅https://ideone.com/Ouo19v