linux c fgets 函数 出现段错误 请大神指正

intifmount(char**spath,char**dpath){FILE*fp;charbuf[BUF];char*sou,*des;intsp=0,dp=0;i... int ifmount(char **spath,char **dpath)
{
FILE* fp;
char buf[BUF];
char *sou, *des;
int sp=0,dp=0;

if(fp = fopen("/proc/mounts","r") == NULL)
{perror("File open error\n");}
else
{
printf("aaaaaaaaaaaaaaa\n");
while((fgets(buf,BUF,fp)) != NULL)
{
printf("aaaaaaaaaaaaaaa\n");
sou=strtok(buf," ");
des=strtok(NULL," ");
sp=strcmp(*spath,sou);
dp=strcmp(*dpath,des);
if(sp == 0 && dp == 0)
{
fclose(fp);
return 1;
}
}
}
fclose(fp);
return -1;
}
BUF 是宏定义 值为1024 第一个aaaaaaaaaaaaaaa 可以打印出来第二个aaaaaaaaaaaaaa打印不出来程序段错误请大神指正。
展开
 我来答
charleszhangji
2016-11-01 · TA获得超过4554个赞
知道小有建树答主
回答量:887
采纳率:0%
帮助的人:962万
展开全部
出现段错误的原因是fp这个指针没有正确的赋值。
应该在赋值的时候加上括号
if ((fp = fopen("/proc/mounts","r") )== NULL)

或者 写成两行
fp = fopen("/proc/mounts","r") ;
if (fp == NULL) ....
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式