【问题标题】:Redirecting output to file using fopen_s使用 fopen_s 将输出重定向到文件
【发布时间】:2013-07-24 12:23:08
【问题描述】:

我正在尝试将缓冲区输出到位于我的桌面的文件“z.txt”中。我正在使用 win32 (visual c++) 我这样做的语法是 -

  memcpy(HtmlFileContents,&Buffer[location],HtmlFileLength);//i have the contents in HtmlFileContents 
//which i have to display  in the file "z.txt"
                FILE *stream ;
                errno_t err;
                err=fopen_s(&stream, "C:\\Users\\sshekha\\Desktop\\z.txt","w");//err gives error 13
// when in write mode but when in read mode it opens the file   
                if( err == 0 )
                {
                    MessageBox(m_hwndPreview,L" the file is opened ",L"BTN WND",MB_ICONINFORMATION);
                }
                else
                {
                    MessageBox(m_hwndPreview,L" the file is not opened ",L"BTN WND",MB_ICONINFORMATION);

            }

谁能告诉我为什么这样做???

【问题讨论】:

  • 你能描述一下它做错了什么吗?
  • 您实际上在哪里写入文件的输出?
  • Joachim 现在我只是打开它,但即使它没有打开它,并且 eb=ven 如果我把它设置为读取模式,它会给 dialodbox 提到“文件已打开”但是当我在调试时看到它有价值流 = 0x000000005c5c76f0 {_ptr=0x0000000000000000 _cnt=0 _base=0x0000000000000000 ...}
  • 然后它打开的,你可以写入文件。不要过多阅读 stream 结构中的值,因为它应该是一个“黑匣子”。
  • 不,但这些值是当我输入“r”而不是“w”时。我的意思是在读取模式下它打开文件但不是在写入模式下(错误在写入模式下调试时给出 13,但在读取模式下给出 0)

标签: c++ visual-c++ fopen file-handling


【解决方案1】:

如果您检查 official reference of errors,您将看到错误 13 是 EACCESS,这意味着您没有写入文件的权限。

您需要更改文件权限才能写入文件,当然还有文件夹。

【讨论】:

  • 我的 cj=hecked 权限没有任何问题,也没有在任何地方打开,我也正确关闭了它。我不知道是什么问题。
  • 约阿希姆有问题吗?是否有必要如果我们使用 fputs() 输出到文件,那么该文件必须在仅以读取模式写入(而不是写入)之前打开??
  • @ShekharSinghSHEKHAWAT 您不能写入仅为读取而打开的文件。至于权限,你也检查过文件夹权限吗?
  • @ShekharSinghSHEKHAWAT 当你以用户sshekha 登录时运行程序?很明显,有 something 你没有权限,因为那是你得到的错误。
  • @ShekharSinghSHEKHAWAT 也可以尝试在其他地方创建文件,例如当前目录或C:\Temp
【解决方案2】:

您应该检查文件是否在其他地方打开(或者更具体地说,没有正确关闭)。

【讨论】:

  • 它没有在任何地方打开
  • 那么,为什么不用记事本打开/关闭它以确保它已正确关闭(并在操作系统中查看)并重新启动您的程序?
  • 耶也这样做了。它给出了一个调试断言失败的调试对话框。表达式:(stream!=NULL)
猜你喜欢
  • 1970-01-01
  • 2016-06-23
  • 2016-08-09
  • 2013-10-11
  • 2023-03-19
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多