作者QQ29 (我爱阿蓉)
看板C_and_CPP
标题[问题] fopen回传null该怎麽办
时间Fri Jul 10 17:55:28 2009
大家好
是这样的.... 我目前自己写的程式 想到别台电脑上跑
因为不是什麽大程式 只不过读写档案而已 自己的电脑跑是OK的不会出错
丢到另一台旧电脑 也是可以跑没有错误
问题就在我丢到另一台电脑 他却会出现assertion fail ...
fwrite.c
Expression: (stream!=NULL)
_VALIDATE_RETURN( (stream != NULL), EINVAL, -1);
是出现在下面这段
FILE * pFile;
pFile=fopen("C:\\test.bin","wb");
fwrite(...,...,...,pFile);
我发现pFile得到fopen的return值後 会是null....
没道理阿= =
我找不出错误 只能想说三台电脑平台上的差异 就是坏掉的这台是vista 32bit
可是为什麽会一直return null...
请问有人知道是什麽原因嘛?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.207.187
※ 编辑: QQ29 来自: 140.113.207.187 (07/10 18:01)
1F:→ zlw:下中断点在fwrite,检查有无产生test.bin,监看式检查$err,hr 07/10 18:07
2F:→ zlw:虚拟变数(虚拟暂存器),要自己手动加 07/10 18:07
3F:→ QQ29:$err,hr0x00000005 存取被拒.....奇怪= = 07/10 18:15
4F:→ QQ29:是不是vista有什麽怪设定! 我把它存到e: 好像过了那行了 07/10 18:20
5F:→ QQ29:暂存器写S_OK.. 07/10 18:20
6F:→ weiyucsie:我知道ntfs作业系统可以设定写入权限啦 07/10 18:44
7F:推 zlw:嗯,可能是OS权限设定吧 07/10 18:46
8F:→ weiyucsie:阿 ntfs是档案系统 我一定是昏了头XD 07/10 20:23
9F:推 ledia:开档先检查回传的 fp 是好习惯, 能的话再 GetLastError() 07/10 23:40
10F:推 hikaru06:推楼上的, 等到系统一大起来 要找出哪里assert,就.. 07/11 12:24
11F:→ hikaru06:return null 就是找不到该档案,会是环境变数的问题吗? 07/11 12:25
12F:推 legnaleurc:Vista 印象中会保护系统碟... 07/11 13:05
13F:推 Bencrie:return null只能说开档失败,不能说找不到档案 XD 07/11 20:04
14F:→ QQ29:爬文 也没人遇到这问题耶!难道大家都没有再vista写程式嘛@@ 07/12 00:15
15F:推 Ebergies:看 GetLastError 不就好了 @@? 07/13 10:59