您的位置:首页 > 运维架构

使用fopen错误关闭文件问题

2013-10-31 08:51 246 查看
昨晚,遇到一个很久才查出来的BUG,在此写下博客,提醒自己写代码一定要细心,往往很多BUG都是很细小的点没有注意到!

例如: FILE *fp = NULL;

fp = fopen("/sys/class/net/usb0/mtu", "r");

if(NULL == fp)

{

sendMsgToMiracast(&msg);

printf("\nMiracastApp Start!!\n");

}

else

{

sendMsgToMirrorlink(&msg);

printf("\nMirrorlinkApp Start!\n");

}

fclose(fp);

fp=NULL;

以上有一个很不起眼的错误,你注意到了么?

如果fp=NULL? 那么fclose还能关掉吗?如果这样写的话,程序就会莫名其妙的跑飞,找都找不到!所以关闭fp之前你得做个判断!

正确的写法:

FILE *fp = NULL;

fp = fopen("/sys/class/net/usb0/mtu", "r");

if(NULL == fp)

{

sendMsgToMiracast(&msg);

printf("\nMiracastApp Start!!\n");

}

else

{

sendMsgToMirrorlink(&msg);

printf("\nMirrorlinkApp Start!\n");

}

if(NULL!=fp)

{fclose(fp);}

fp = NULL;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: