我的问题陈述是这样的,我运行命令并将命令的输出保存在缓冲区中。我的 while 循环在输出中查找特定字符串,如果该字符串存在,则运行所需的函数。
为了结束 while 循环,我已经提到了 feof,在 while 循环中但循环不起作用!
这是代码的快照,我想以优化的方式结束 while 循环!
FILE *fp = popen("ls","r");
char store[128];
while((fgets(store,sizeof store, fp)!=NULL) || (feof(fp))){
if(strcasestr(buffer,"abc")){
printf("\nSuccess");
some_other_function();
}
}
pclose(fp);
}
循环条件应该是:
while( fgets(store,sizeof store, fp) != NULL )
此时没有理由也检查 feof。如果到达文件末尾但读取了一些字符,那么您确实希望处理该字符串。
您可以feof
在循环后检查以确定输入是否由于读取错误或文件结尾而失败。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句