main参数啊!
int
main(int
argc,char
argv[])
{
printf(argv[0]);
return
0;
}
这样得到一个字符串,从中提取出路径不是难事,如果不行Q960575562
C#获取当前路径的方法如下:1 SystemDiagnosticsProcessGetCurrentProcess()MainModuleFileName -获取模块的完整路径。2 SystemEnvironmentCurrentDirectory-获取和设置当前目录(该进程从中启动的目录)的完全限定目录。3 SystemIODirectoryGetCurrentDirectory()-获取应用程序的当前工作目录。这个不一定是程序从中启动的目录啊,有可能程序放在C:\>
你试一下这个代码 这个把exe的名字也输出了
如果不满意 改改就行
int main(int argc,char argv[])
{
printf("The current path : %s\n", argv[0]);
return 0;
}
看看你的计算机上有没有 Windows XP 的 wmic 命令。
在DOS 黑窗 打命令
wmic process
可以获得所有进程信息。
编程序,用 system("wmic process > my_logtxt");
把 屏幕输出 转向 到 文件 my_logtxt 里。
然后 fopen my_logtxt ,从里面 抓出 你要的 进程。
如果觉得信息太多,查一下帮助文件,找合适的选项命令,wmic process 加上选项 就可以了。
例如:
system("wmic process get ExecutablePath > my_logtxt");
my_logtxt 里有:
C:\WINDOWS\System32\smssexe
C:\WINDOWS\system32\csrssexe
C:\WINDOWS\system32\winlogonexe
C:\WINDOWS\system32\servicesexe
C:\WINDOWS\system32\lsassexe
C:\WINDOWS\system32\svchostexe
。。。
argv[0]是调用程序时的第一个参数,也就是程序名,但如果是用绝对路径调用程序的话,argv[0]就含有绝对路径和文件名了。由于VC6是这样做的,所以导致楼上有这个误会。
找到工作路径是系统相关的,包含windowsh后,可以使用这样一组函数
1GetCurrentDirectory()
2GetCurrentDirectoryA()
3GetCurrentDirectoryW()
(1)实际是一个宏,直接指向了(2),它的函数原型是:
DWORD GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer)
要指定一个缓冲区存储函数结果,
第一个参数是缓冲区的大小,第二个参数是缓冲区首地址,
返回值是实际路径字符串的长度。
调用起来就像这样:
#include <stdioh>
#include <windowsh>
int main(int argc, char argv[])
{
char dir[100];
int length;
length = GetCurrentDirectory(100,dir);
printf("%d\n%s\n",length,dir);
return 0;
}
(3)嘛,顾名思义,是处理宽字符的,如果你的路径名里有东方文字,就使用这个啦。
DWORD GetCurrentDirectoryW(DWORD nBufferLength, LPWSTR lpBuffer)
注意第二个参数与上面的不同,是宽字符指针,准确的说是unsigned short
最后,提醒一下,由于是win32api,并不是c/c++标准库里的函数,所以是系统相关的,使用的同时,你的程序失去了可移植性,请小心使用。
GetCurrentDirectory是取得当前工作路径,如果程序中改变了这个路径比如用CFileDialog打开了一个文件,GetCurrentDirectory得到的结果会发生变化。
一般来说,取得程序运行目录的方法是用GetModuleFileName来获取当前Module的完整路径,当其第一个参数hModule置NULL的时候得到当前APP的绝对路径,然后去掉最后一个"\"以后的部分即文件名部分,就得到了程序运行目录。
大体上可以这样写(仅供参考):
char buffer[MAX_PATH+1];
::GetModuleFileName (NULL,buffer,MAX_PATH);
for(int i=MAX_PATH-1;i>=0;i--)
{
if((buffer+i)!='\\')
{
(buffer+i)=0;
}else{
break;
}
}
以上就是关于c语言怎么获得当前程序运行路径全部的内容,包括:c语言怎么获得当前程序运行路径、C#怎么获得电脑指定路径下文件夹内的文件名称、C语言下如何编写程序检测当前程序所在路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)