这个问题是将字符串“a1a2a3a4"中的a替换为b,有些不明白为什么这样写错误呢

#include<stdio.h>
int main()
{
    char str[]="a1a2a3a4",*p=str;
    int i=0;
    while(*(p+i))
    {
        if(*(p+i)=='a') p[i++]='b';
    }
    puts(str);
   return 0;
}

如果取到的值不是a,i就不会加1,那么就没办法往下走,就会死循环。所以无论是不是a,i都要加1

#include<stdio.h>
int main()
{
    char str[]="a1a2a3a4",*p=str;
    int i=0;
    while(*(p+i))
    {
        if(*(p+i)=='a'){
            p[i]='b';
        }
        i++;
    }
    puts(str);
    return 0;
}