为了账号安全,请及时绑定邮箱和手机立即绑定

请大神帮忙分析一下原因,要怎么解决才行?

请大神帮忙分析一下原因,要怎么解决才行?

Smart猫小萌 2022-06-18 17:11:24
........fp = popen(cmd, "r");if (!fp) {return -1;}while (1) {memset(buffer, 0, sizeof(buffer));fgets(buffer, sizeof(buffer) - 1, fp); ///执行某条命令时,会挂在这里f(feof(fp)) {break;}printf(xxxxx);}
查看完整描述

1 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

起码你的代码有一个漏洞:第一次进入while时,!feof(pipe)是在判断谁?说明你对feof()这个函数并没有掌握,它必须在逻辑上“紧跟”在读文件动作之后才能正确生效,这第一次是“紧跟”在哪个读动作之后?到了文件结尾处就更可笑了:经while(!feof(pipe))判断文件还没有结束,比如说文件中还剩一个最后的'\n',可是体中的if(fread(&c,1,1,pipe)==1)中的fread函数还能读到什么?细节我就不说了,太长。建议把
while(!feof(pipe)){
if(fread(&c,1,1,pipe)==1){
result[i++]=c;
if(c==0)
break;
}
}
这一段改成
while(fread(&c,1,1,pipe),!feof(pipe)){
result[i++]=c;
//if(c==0)//这两句考虑一下吧,文件中有0吗?不可能有0,所以逻辑就有问题,建议删除
//break;
}
一试。

查看完整回答
反对 回复 2022-06-20
  • 1 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号