c语言代码不对,找错

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

这是题目要求,下面是我的代码,跑出来的数据不对
```c
#include<stdio.h>
int sequence_len(char* p)
{
    int i =0;
    for (; *p != '\0'; p++,i++)
        if (*p > *(++p)) 
            break;
    return i;

}
int main(void)
{
    char mystring[] =  "acb" ;
    printf("%d\n", sequence_len (mystring));
    return 0;
}

```

if ( * p > * (p+1))
不能用++p,否则加上for循环的p++,每次循环p向后移动两个位置了啊
就算这样也还有问题,可能p是最后一个字符,但 * (p+1)就是'\0'了

#include<stdio.h>
int sequence_len(char* p)
{
    int i =0;
    while(*p != '\0')
    {
        i++;
        if(*(p+1) == '\0')
            break;
        if(*p > *(p+1))
            break;
        p++;
    }

    return i;
}
int main(void)
{
    char mystring[] =  "acb" ;
    printf("%d\n", sequence_len (mystring));
    return 0;
}

改成下面的代码

#include<stdio.h>
int sequence_len(char* p)
{
    int i =0;
    for (; *p != '\0'; p++,i++)
        if (*p > *(p+1)) 
            break;
    return i;
}
int main(void)
{
    char mystring[] =  "acb" ;
    printf("%d\n", sequence_len (mystring));
    return 0;
}

如果对你有帮助,望采纳

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632