如何解决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
相关产品推荐
相关产品推荐

