[这个贴子最后由kkting在 2005/07/20 08:44pm 第 1 次编辑]
fopen的一个bug
黑海 夕夜
这应该是微软的一个bug了吧,嘿嘿
具体情况是这样的,我简要写下代码:
#include
main()
{
FILE *fp;
.....
.....
name = "con.mp3";//con.mp3是文件名
fp = fopen(name,"rb");
if(fp == NULL)
{
语句1;
}
else
{
语句2;
}
}
在当前文件夹下并没有con.mp3这个文件,按理来说这时打开不成功,fp应该是一个空值,会执行语句1,
但是它就会执行语句2。
最后发现:
发现只要是跟DOS文件句柄有关的关键字都如此,比如aux和prn,而且,这些关键字后面要紧跟一个点,
才会发生这种情况,点后面无论加入多少字符,都忽略,如果后面跟的是其它字符,就不会发生这个问题
。
一些相关的东西:
con是dos的保留关键字,在系统文件句柄中,除非用户设置,默认是8个句柄,dos本身占用了其中的5个
,前三个句柄用于输入(通常是键盘)、输出(通常是屏幕)和错误输出(通常也是屏幕),这三个句柄
dos起了个别名就叫con,另两个叫aux和prn,aux通常指的是com1,prn就是打印口。
|