如果发生特定事件,我的 C 程序需要跳过其余代码。我已经使用 continue 了,但是有一些问题。我不确定问题是由于那个原因还是其他原因,但这是逻辑错误。
我正在向BoyerMoore_positive(ch[i], strlen(ch[i]) );
函数发送单词以验证它是否存在于特定的单词列表中。如果存在,则增加计数值。
因为 skp = BoyerMoore_skip(ch[i], strlen(ch[i]) );
如果这个函数中存在单词,那么我想跳过其余的代码并继续下一个单词。所以我增加了i
.
它检查“他是你她是”这个列表。但是,当 word 出现在此列表中并在函数中执行操作后返回时,尽管我已递增,但它不会继续执行下一个 word i
。它会循环播放BoyerMoore_skip(ch[i], strlen(ch[i]) );
一段时间,然后停止而不处理下一个单词。
我知道这对我的程序来说是非常具体的问题,但任何帮助都是非常可观的。我可能会犯一些愚蠢的错误。
代码:
while ((NULL != word) && (50 > i))
{
ch[i] = strdup(word);
//printf("%s n", ch[i]);
skp = BoyerMoore_skip(ch[i], strlen(ch[i]) );
// printf("skip is %s \n",skp);
if(skp != NULL)
{
i++;
printf("in\n");
continue;
}
// I tried with keeping i++ and continue in seperate if(skp != NULL) but same result.
printf("\n hi2 \n");
str = BoyerMoore_positive(ch[i], strlen(ch[i]) );
str2= BoyerMoore_negative(ch[i], strlen(ch[i]) );
printf("Str is %s \n",str2);
if (str == NULL)
t++;
else {
printf("%s \n", ch[i]);
// puts("true");
pcount += 1;
printf("Positive count is: %d \n",pcount);
}
if(str2== NULL)
q++;
else {
printf("%s \n", ch[i]);
// puts("true");
ncount += 1;
printf("Nagative count is: %d \n",ncount);
}
i++;
word = strtok(NULL, " ");
if(str==NULL && str==NULL and skp !=NULL)
{
pcount=0;
ncount=0;
}
}