C语言怎么打开文件
发布网友
发布时间:2022-04-24 00:28
我来回答
共1个回答
热心网友
时间:2022-05-25 18:24
获取当前程序所在路径:
一、1.只获得路径字串不包含文件名
TCHAR
szFilePath[MAX_PATH
+
1]={0};
GetMoleFileName(NULL,
szFilePath,
MAX_PATH);
(_tcsrchr(szFilePath,
_T('\\')))[1]
=
0;//删除文件名,只获得路径字串
CString
str_url
=
szFilePath;
//例如str_url==e:\program\Debug\---------------------------------------------------------2.获得双斜杠路径不包含文件名TCHAR
_szPath[MAX_PATH
+
1]={0}; GetMoleFileName(NULL,
_szPath,
MAX_PATH); (_tcsrchr(_szPath,
_T('\\')))[1]
=
0;//删除文件名,只获得路径
字串 CString
strPath; for
(int
n=0;_szPath[n];n++){if
(_szPath[n]!=_T('\\')){
strPath
+=_szPath[n]
;} else{
strPath
+=
_T("\\\\");}}MessageBox(strPath);//输出==e:\\program\\Debug\\二、1:获取应用程序自身完整路径文件名方法1:#include
"stdlib.h"void
main(){cout
<<
_pgmptr
<<
endl;}方法2:char
szFullPath[MAX_PATH];ZeroMemory(szFullPath,MAX_PAT);::GetMoleFileName(NULL,szFullPath,MAX_PATH);::MessageBox(NULL,szFullPath,"path",MB_ICONINFORMATION);方法3:TCHAR
szPath[MAX_PATH]
=
{0};if(!GetMoleFileName(NULL,
szPath,
MAX_PATH)){
return
;
} AfxMessageBox(szPath);2:如何获取应用程序所在目录?这里值得注意的是很多人都用GetCurrentDirectory(MAX_PATH,
szCurrentPath);来获取。这个方法并不好,经常出错,比如现在我有一个程序在d:\test目录下,现在运行这个程序后用GetCurrentDirectory得到的是d:\test。接着在程序里用CFileDialog来打开一个C:\test\test.txt文件后再调用GetCurrentDirectory,那么得到的szCurrentPath就是C:\test而不是d:\test。推荐用如下方法来得到当前程序所在目录比较安全:void
_splitpath(
const
char
*path,
char
*drive,
char
*dir,
char
*fname,
char
*ext
);函数来分解开始提到的_pgmptr,然后再用void
_makepath(
char
*path,
const
char
*drive,
const
char
*dir,
const
char
*fname,
const
char
*ext
);函数来对分解后的路径进行组合。这两个函数结合起来功能强大,使用灵活,基本上所有的有关目录和路径方面的操作都可以搞定,就是麻烦。