【发布时间】:2015-10-09 19:31:04
【问题描述】:
我正在尝试一个问题,我必须为以 b 结尾的字符串编写“Accept”。我在处理这部分代码时遇到了问题:
char s[100];
int length,i=0;
gets(s);
length=strlen(s);
for( i=0; i<length; i+2)
{
if(s[i]=='b' && s[i+1]=='\0')
printf("Accept");
else printf("Not accept");
}
但是这个循环无限运行。 当我使用这个时,同样的问题得到了解决:
while(s[i]!='\0')
{
if(s[i]=='b' && s[i+1]=='\0')
printf("Accept");
else printf("Not accept");
i+2;
}
我知道 for 循环的逻辑存在问题,并且已经尝试了很多来解决它,但失败了。我是编程新手。你能帮我解决这个问题吗?
【问题讨论】:
-
括号有问题
-
while 循环运行良好。
-
您声称,当您在
while循环的末尾使用i+2时,它运行良好并给出正确的结果?我向你保证不会;它要么根本不进入循环(如果s[i]的初始值i- 在您的while示例中两者似乎都未初始化 - 恰好是0)或无限期地留在循环中。至少是i += 2;或i = i + 2; -
顺便说一句,您假设空字符处于偶数位置
-
@Ed Heal 是的,你是对的。我已经编辑了我的问题以更正代码。
标签: c for-loop infinite-loop