C语言中存在类似GetOpenFile的函数吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计535个文字,预计阅读时间需要3分钟。
Windows中确实有一个名为GetOpenFile的函数,但是它并不是一个标准的Win32 API函数。通常我们使用的是GetOpenFileName函数来实现文件打开对话框。以下是一个使用C语言和Win32 API实现文件打开对话框的简单示例:
c#include #include
int main() { OPENFILENAME ofn; // 公共对话框结构 char szFile[260]; // 缓冲区
// 初始化OPENFILENAME结构 ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize=sizeof(ofn); ofn.hwndOwner=NULL; ofn.lpstrFile=szFile; ofn.lpstrFile[0]='\0'; ofn.nMaxFile=sizeof(szFile); ofn.lpstrFilter=All\0*.*\0Text\0*.txt\0; ofn.nFilterIndex=1; ofn.lpstrFileTitle=NULL; ofn.nMaxFileTitle=0; ofn.lpstrInitialDir=NULL; ofn.Flags=OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// 显示打开文件对话框 if (GetOpenFileName(&ofn)==TRUE) { // 文件路径已存储在szFile中 printf(Selected file: %s\n, szFile); }
return 0;}
这段代码首先包含了必要的头文件,并定义了一个`OPENFILENAME`结构体来存储文件对话框的相关信息。然后,它使用`ZeroMemory`函数初始化这个结构体,并设置了一些参数,如文件类型过滤器、文件路径缓冲区等。最后,调用`GetOpenFileName`函数显示文件打开对话框,如果用户选择了文件,则文件路径会被存储在`szFile`缓冲区中,并打印出来。
windows中有个GetOpenFile的函数,就是上面那个啦!!我们怎么来实现呢?要我用C语言写出来我真的跪了。。但是我们可以输入文件的,配合fopen函数来实现的。。
注意问题
①文件名中可能有空格,用scanf函数来输入文件路径不太好,他遇到空格会停止。。解决:我们用gets来输入,记得fflush(stdin)。。
②那就是最重要的问题了,转义字符,,C语言的fopen中需要用或分开文件级。。如果我们输入
。。我们该怎样转换成
这样呢?
void otherFile(char buffer[256])
{
FILE *fp;
char ch='\\';
int i,j=0;
for(i=0;buffer[i]!='\0';i++)
{
if(buffer[i]==ch)
{
buffer[j++]='\/';
}
else
{
buffer[j++]=buffer[i];
}
}
buffer[j]='\0';
fp=fopen(buffer,"r");
if(NULL==fp)
{
system("cls");
printf("can not open the file");
Sleep(3000);
return;
}
/*
//OK了
*/
}
特别注意用char ch='\\';这里第一个斜杠是转义字符来的。。
本文共计535个文字,预计阅读时间需要3分钟。
Windows中确实有一个名为GetOpenFile的函数,但是它并不是一个标准的Win32 API函数。通常我们使用的是GetOpenFileName函数来实现文件打开对话框。以下是一个使用C语言和Win32 API实现文件打开对话框的简单示例:
c#include #include
int main() { OPENFILENAME ofn; // 公共对话框结构 char szFile[260]; // 缓冲区
// 初始化OPENFILENAME结构 ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize=sizeof(ofn); ofn.hwndOwner=NULL; ofn.lpstrFile=szFile; ofn.lpstrFile[0]='\0'; ofn.nMaxFile=sizeof(szFile); ofn.lpstrFilter=All\0*.*\0Text\0*.txt\0; ofn.nFilterIndex=1; ofn.lpstrFileTitle=NULL; ofn.nMaxFileTitle=0; ofn.lpstrInitialDir=NULL; ofn.Flags=OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// 显示打开文件对话框 if (GetOpenFileName(&ofn)==TRUE) { // 文件路径已存储在szFile中 printf(Selected file: %s\n, szFile); }
return 0;}
这段代码首先包含了必要的头文件,并定义了一个`OPENFILENAME`结构体来存储文件对话框的相关信息。然后,它使用`ZeroMemory`函数初始化这个结构体,并设置了一些参数,如文件类型过滤器、文件路径缓冲区等。最后,调用`GetOpenFileName`函数显示文件打开对话框,如果用户选择了文件,则文件路径会被存储在`szFile`缓冲区中,并打印出来。
windows中有个GetOpenFile的函数,就是上面那个啦!!我们怎么来实现呢?要我用C语言写出来我真的跪了。。但是我们可以输入文件的,配合fopen函数来实现的。。
注意问题
①文件名中可能有空格,用scanf函数来输入文件路径不太好,他遇到空格会停止。。解决:我们用gets来输入,记得fflush(stdin)。。
②那就是最重要的问题了,转义字符,,C语言的fopen中需要用或分开文件级。。如果我们输入
。。我们该怎样转换成
这样呢?
void otherFile(char buffer[256])
{
FILE *fp;
char ch='\\';
int i,j=0;
for(i=0;buffer[i]!='\0';i++)
{
if(buffer[i]==ch)
{
buffer[j++]='\/';
}
else
{
buffer[j++]=buffer[i];
}
}
buffer[j]='\0';
fp=fopen(buffer,"r");
if(NULL==fp)
{
system("cls");
printf("can not open the file");
Sleep(3000);
return;
}
/*
//OK了
*/
}
特别注意用char ch='\\';这里第一个斜杠是转义字符来的。。

