【问题标题】:fopen() does not work after choosing file from file open dialog in MFC从 MFC 中的文件打开对话框中选择文件后 fopen() 不起作用
【发布时间】:2012-09-20 11:34:29
【问题描述】:

MFC 应用程序中,我有一个文件浏览按钮。当我单击它并选择一个文件时,该文件已加载并且一切正常。

在此之后我有一个函数,它尝试使用fopen(), 打开另一个文件,但尽管文件存在,但无法打开该文件。如果我在文件浏览对话框中选择取消,fopen() 可以正常工作,但一旦我使用文件浏览对话框选择文件,fopen 就不起作用。

有人能说出为什么会这样吗?

【问题讨论】:

  • 能否分享一下代码。调试问题很困难,但代码更容易阅读。
  • 无关,但我很好奇你为什么用fopen而不是fstream
  • 可能像权限问题一样简单...检查 errno 以获取线索
  • 我只需要检查文件是否存在所以我在做 FilePopinter = fopen("filename"); if(FilePopinter ){...}else{...} 但它不起作用。正如 Joachim Pileborg 所说,我尝试使用 ofstream::good() 并且它的工作正常我不知道如何:|总之谢谢大家。
  • fopen() 的第二个参数是什么?因为它通常需要其中 2 个(一个用于文件名,一个用于模式)

标签: c++ mfc


【解决方案1】:

也许您通过相对路径指定第二个文件,并且在使用对话框打开第一个文件后,工作目录已更改。当您按Cancel 时,工作目录不会更改并且可以正常工作。

此问题的解决方案是例如使用完整的非相对路径指定第二个文件。

【讨论】:

  • 我尝试使用非相对路径,但它不起作用。相反,我使用 fsteam::good 检查文件是否存在并且工作正常。我不知道 fopen 出了什么问题,但 fstream 工作正常。无论如何,谢谢 Psur。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 2020-10-08
  • 1970-01-01
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多