gpt4 book ai didi

c - For 循环在嵌套 while 循环完成后或在 Break 之后粘着

转载 作者:行者123 更新时间:2023-11-30 16:24:05 25 4
gpt4 key购买 nike

下面是一段代码,用于迭代文件名列表并检查它们是否等于我正在查找的文件名。它们是片段文件,因此我必须使用 sprintf 来检查文件的特定部分。

for(i = 1; i < 4; i++){
bzero(filebuf, 500);
sprintf(filebuf, ".%s.%d",filebuf2, i);
strcpy(fileslist2, fileslist);
tok = strtok(fileslist2, "|");
while(tok != NULL){
tok = strtok(NULL, "|");
if(strcmp(tok, filebuf) == 0){
printf("Equal!\n");
i = 5;
break;
}
}
}

这里的想法是,如果找到文件,我需要打破两个循环。但现在如果它找到该文件,代码就会停止。另外,如果该文件不存在,则 for 循环需要迭代并继续寻找下一 block 。这也没有发生,在 tok == NULL 之后它也挂起。任何帮助深表感谢。

最佳答案

一个小的修改,可能有助于防止 NULL 上的 strcmp

for(i = 1; i < 4; i++) {
bzero(filebuf, 500);
sprintf(filebuf, ".%s.%d",filebuf2, i);
strcpy(fileslist2, fileslist);
tok = strtok(fileslist2, "|");
while(tok != NULL) {
// tok = strtok(NULL, "|"); // moved down
if(strcmp(tok, filebuf) == 0) {
printf("Equal!\n");
i = 5;
break;
}
tok = strtok(NULL, "|"); // to here
}
}

关于c - For 循环在嵌套 while 循环完成后或在 Break 之后粘着,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53716531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com