int
main(int
argc,char*
argv[])
{
return
0
}
argc
是命令行参数的个数,argv是一个字符串数组,代表以空格分隔的命令行参数,其中
argv[0]
也可以使用API函数
GetModuleFileName
,用法如下,需要包含头文件
windows.h
和
tchar.h
TCHAR
szFile[MAX_PATH]
=
{0}
DWORD
dwLen
//返回路径长度
dwLen
=
GetModuleFileName(NULL,szFile,MAX_PATH)
此时,szFile
中保存了程序本身的路径,可以将最后的扩展名改为
txt
即可得到一个与程序同路径同名的文本文件名,将数据写入其中即可。
代码如下:
szFile[dwLen
-3]
=
0
_tcscat(szFile,_T("txt"))
此时,szFile
就是一个文件文件路径了,可以直接用。
我想,你所说的默认路径,可以先把一个路径(想要的默认路径)保存到一个字符数组中,输入文件名后,用
strcat
函数把文件名连接到默认路径的后面就可以了。
如果要改变路径,就用
strcpy
直接把新的路径复制到字符数组中。
要用 c++ 程序:#include <windows.h>
#include <string>
#include <iostream>
using namespace std
string ExePath() {
char buffer[MAX_PATH]
GetModuleFileName( NULL, buffer, MAX_PATH )
string::size_type pos = string( buffer ).find_last_of( "\\/" )
return string( buffer ).substr( 0, pos)
}
int main() {
cout <<"my directory is " <<ExePath() <<"\n"
}
=====
c 程序,也许可以通过char *argv[] 寻找,
int main(int argc, char *argv[]){。。。。}
argv[0] 含程序名,可以尝试 用 system() 调 DOS 命令查找:
#include<stdio.h>
int main(int argc, char *argv[])
{
FILE *fp
char s[80]
sprintf(s,"DIR %s.c >a.log",argv[0])
system(s) // 执行后,屏幕输出 存入 a.log 文本文件
fp =fopen("a.log","r") // 打开文件
// 这里 一行一行地读文件,找到 关键词 Directory of , 例如:
// Directory of D:\ZZ\C\example
// D:\ZZ\C\example 就是当前路径
return 0
}
文件路径分为绝对路径和相对路径。绝对路径:是从盘符开始的路径,形如
D:\Project\Data\input.txt
相对路径:是从当前路径开始的路径,假如当前路径为D:\Project
要描述上述路径,只需输入
Data\input.txt
实际上,严格的相对路径写法应为
.\Data\input.txt
其中,.表示当前路径,在通常情况下可以省略,只有在特殊的情况下不能省略。
与.类似..为父目录,也即上一层目录。
另外,还有一种不包含盘符的特殊绝对路径,形如
\windows\system32\cmd.exe
无论当前路径是什么,会自动地从当前盘的根目录开始查找指定的程序。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)