我有一个程序可以读取从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);
}