[听说这里的人什么都懂]关于CreateFile第一个参数类型的问题

Debugyt 2012-10-12 01:26:21
遇到一个很奇怪,诡异的问题
试用CreateFile函数创建或者打开文件,
char szFileName[MAX_PATH] = "123.txt";

CreateFile(szFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
这样打开文件失败。GetLastError()得到的是2

要是
CreateFile("123.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
可以打开成功


当前目录下存在123.txt文件
...全文
162 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
northcan 2012-10-12
  • 打赏
  • 举报
回复
肯定是szFileName存储的路径不对,设断点,执行CreateFile之前看看szFileName的内容到底是什么。
赵4老师 2012-10-12
  • 打赏
  • 举报
回复
TCHAR szFileName[MAX_PATH] = _T("123.txt");
图灵狗 2012-10-12
  • 打赏
  • 举报
回复
在CreateFile(szFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);设置断点进行调试,看看代码执行到这行的时候,szFileName的值是多少。
armsword 2012-10-12
  • 打赏
  • 举报
回复
你printf打印szfilename看看是啥,你就知道了。
armsword 2012-10-12
  • 打赏
  • 举报
回复
因为szfilename里面的内容不仅仅是123.txt
636f6c696e 2012-10-12
  • 打赏
  • 举报
回复
我记得createfile只能传入全路径吧。
我测试下来的结果是2个都会出现错误,错误代码是2(找不到文件)
「已注销」 2012-10-12
  • 打赏
  • 举报
回复
可能你什么时候把szFileName改变了,而自己不知道

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧