c语言怎么获得当前程序运行路径

c语言怎么获得当前程序运行路径,第1张

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语言下如何编写程序检测当前程序所在路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9324471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存