读取文件时,访问冲突读取C中的位置



我有一个程序可以读取从OPENFILENAME返回的文件。它有一个大的编辑控件。这应该是从文件中获取文本并让用户保存它。我就是无法理解它。fopen(path, "r+")出于某种奇怪的原因抛出了一个异常

准确的错误消息:"在记事本(C(.exe中的0x00007FF87B5A86E2(基于ucrt.dll(处引发异常:0xC0000005:读取位置0x000000000000722B时发生访问冲突">

下面是读取它的函数:

void ReadOpenedFile(char* path, HWND hTextBox)
{
// Warning suppressor because it doesn't build without fopen_s it seems.
#pragma warning (disable: 4996)
FILE* f = fopen(path, 'r+');
SetWindowText(hTextBox, f);
fclose(f);
}

我从文档文件夹中得到了它,但我知道因为Windows保护它,所以我尝试了音乐文件夹。它仍然没有起作用。我试过很多不同的网站。他们都说打开文件的方法是一样的。我总是遇到同样的例外。我测试过OPENFILENAME是否返回了正确的文件路径,它确实返回了

非常感谢您的帮助!

你从不读取文件,只打开它。它应该是(注意未经测试(:

void ReadOpenedFile(char* path, HWND hTextBox)
{
// Warning suppressor because it doesn't build without fopen_s it seems.
#pragma warning (disable: 4996)
FILE* f = fopen(path, "rt");
// error test for f == NULL omitted for brievety
char buf[16384];            // adjust per you requirement up to ~32000
size_t sz = fread(buf, 1, sizeof(buf) - 1, f);
buf[sz] = '';
SetWindowTextA(hTextBox, buf);
fclose(f);
}

相关内容

  • 没有找到相关文章