Windows下怎么用C语言获取正在运行的程序的路径
发布时间:2025-05-13 16:40:07 发布人:远客网络
一、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);