You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决C语言中指针与for循环结合不按预期退出的问题

问题根因

你的代码无法按预期退出循环的核心问题出在for循环的增量逻辑:
你写的*count + 1仅计算了*count加1的结果,但没有将新值赋值回*count指向的内存空间,计数器的值会一直停留在初始值0,只要regexp第一个字符不是],就会永远卡在循环里。

修复方案

将for循环的增量语句修改为*count += 1或者++*count即可,修正后完整代码如下:

int inParent(char *src, char *regexp, int *count) {
    int check = 0;

    printf("%d", *count);
    for (*count = 0; *(regexp + *count) != ']'; *count += 1) {
        if (*(regexp + *count) == *src)
            check = 1;
    }

    if (check == 1)
        return 1;
    return 0;
}
额外优化建议

为了避免regexp字符串不存在]时出现内存越界访问的问题,建议在循环条件里补充字符串结束符判断,修改后的循环条件如下:

for (*count = 0; *(regexp + *count) != ']' && *(regexp + *count) != '\0'; *count += 1)

内容的提问来源于stack exchange,提问作者sbirro420

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:36:08