使用指针替换char数组中的char

时间:2017-10-14 19:53:52

标签: c

简单编程只是替换char数组中的一个字母,试图学习指针。不知道问题是什么,我只是得到输出" senrence" 也许我声明了一个字符串文字或者我的指针逻辑错了?

void replace(char *s,char *ptr_r,char *ptr_t);

int main()

{

    char s[] = "senrence";
    char ch ='r';
    char replacer = 't';
    char *ptr_r = &ch;
    char *ptr_t = &replacer;

    replace(s,ptr_r,ptr_t);

    int i;

    for(i=0;i<8;i++)
    {
        printf("%c",s[i]);
    }

    return 0;

}


void replace(char *s,char *ptr_r,char *ptr_t)

{

    char *p;

    for(p=s;*p != '\0';p++)
    {
        if(*p==*ptr_r)
            *(ptr_t) = *(p);
    }

     s= '\0';

}

1 个答案:

答案 0 :(得分:0)

你的作业有误:

void replace(char *s,char *ptr_r,char *ptr_t)

{

char *p;

    for(p=s;*p != '\0';p++)
    {
        if(*p==*ptr_r)
            *(p)=*(ptr_t);  //modified line
    }
}

修改:

  • 我删除了不必要的s='\0';

  • 您可以使用puts(s)打印char[]而不是迭代它 通过循环。只是一个建议,将节省您编写代码 for loop。

  • 从给定的代码中,我得到了你正在努力学习的概念 的指针即可。因此,我没有建议您使用char variablescall by value执行相同的任务,而不是使用pointers (call by reference)