您当前的位置:首页 > 互联网教程

Windows下怎么用C语言获取正在运行的程序的路径

发布时间:2025-05-13 16:40:07    发布人:远客网络

Windows下怎么用C语言获取正在运行的程序的路径

一、Windows下怎么用C语言获取正在运行的程序的路径

1.可以通过在Windows下使用C语言获取正在运行的程序的路径。

2.在Windows下,可以使用GetModuleFileName()函数来获取正在运行的程序的路径。可以通过查找当前进程的句柄来得到当前程序的句柄,然后使用GetModuleFileName()函数来获取当前程序的完整路径和文件名。

3.值得注意的是,如果应用程序没有一个主模块,或者主模块被卸载了,GetModuleFileName()函数则可能返回一个不正确的路径。所以,我们需要按照进程扫描所有的模块,并使用GetModuleFileName()函数来获得正确的路径。

二、如何用c语言列出目录树

1、表头文件:#include<ftw.h>

2、定义函数:int ftw(const char*dir, int(*fn)(const*file, const struct stat*sb, int flag), int depth)

3、函数说明:ftw()会从参数dir指定的目录开始,往下一层层地递归式遍历子目录。ftw()会传三个参数给fn(),第一个参数*file指向当时所在的目录路径,第二个参数是*sb,为stat结构指针,第三个参数为旗标,有下面几种可能值

4、FTW_DNR不可读取的目录,此目录以下将不被遍历

5、FTW_NS无法取得stat结构数据,有可能是权限问题

6、最后一个参数depth代表ftw()在进行遍历目录时同时打开的文件数。ftw()在遍历时每一层目录至少需要一个文件描述词,如果遍历时用完了depth所给予的限制数目,整个遍历将因不断地关文件和开文件操作而显得缓慢

7、如果要结束ftw()的遍历,fn()只需返回一非零值即可,此值同时也会是ftw()的返回值。否则ftw()会试着走完所有的目录,然后返回0

8、返回值:遍历中断则返回fn()函数的返回值,全部遍历则返回0,若有错误发生则返回-1

9、附加说明:由于ftw()会动态配置内存使用,请使用正常方式(fn函数返回非零值)来中断遍历,不要在fn函数中使用longjmp()

10、/*列出/etc/X11目录下的子目录*/

11、int fn(const char*file, const struct stat*sb, int flag)

12、 printf("%s--- directory\n", file);

三、c语言fread()返回总是0

1、返回0通常是读到了文件尾。如果确认没有到文件尾,可以用ferror检查错误。

2、C语言中:fread是一个函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。

函数原型:size_t fread( void*buffer, size_t size, size_t count, FILE*stream);

size要读的每个数据项的字节数,单位是字节

count要读数据项的个数,每个数据项size个字节.

返回实际读取的元素个数。如果返回值与count不相同,则可能文件结尾或发生错误。从ferror和feof获取错误信息或检测是否到达文件结尾。

if((stream=fopen("DUMMY.FIL","w+"))==NULL)

fprintf(stderr,"Cannotopenoutputfile.\n");

fwrite(msg,1,strlen(msg)+1,stream);

fread(buf,strlen(msg)+1,1,stream);