C语言打开文件选择对话框读取文件
时间: 2023-07-18 15:45:11 浏览: 199
在C语言中,打开文件选择对话框并读取文件可以使用以下步骤:
1. 引入头文件:`#include <stdio.h>`和`#include <windows.h>`。
2. 定义一个`OPENFILENAME`结构体,用于存储文件选择对话框的参数。
```
OPENFILENAME ofn;
char szFile[260];
```
3. 初始化`OPENFILENAME`结构体,设置文件选择对话框的参数。
```
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All Files (*.*)\0*.*\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
```
4. 调用`GetOpenFileName`函数显示文件选择对话框,并获取用户选择的文件名。
```
if (GetOpenFileName(&ofn) == TRUE)
{
printf("Selected file: %s\n", szFile);
}
```
完整的代码示例:
```
#include <stdio.h>
#include <windows.h>
int main()
{
OPENFILENAME ofn;
char szFile[260];
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All Files (*.*)\0*.*\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn) == TRUE)
{
printf("Selected file: %s\n", szFile);
FILE* fp = fopen(szFile, "r");
if (fp == NULL)
{
printf("Failed to open file!\n");
return 1;
}
char buffer[1024];
while (fgets(buffer, sizeof(buffer), fp) != NULL)
{
printf("%s", buffer);
}
fclose(fp);
}
else
{
printf("No file selected!\n");
}
return 0;
}
```