c语言如何获取运行程序的自身文件名?

pan18 2011-05-30 08:59:37
编译完一个程序,名如1111.exe,然后改名为2222.exe,我运行2222.exe 如何获得2222.exe这个执行文件名?
...全文
1763 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pan18 2011-05-30
  • 打赏
  • 举报
回复
不好意思,分值太少了
pan18 2011-05-30
  • 打赏
  • 举报
回复
谢谢ljt3969636.
ljt3969636 2011-05-30
  • 打赏
  • 举报
回复


char path_buffer[_MAX_PATH];
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];


_splitpath(argv[0], drive, dir, fname, ext );
printf("Filename:%s\n ",fname);

FILE *f ;

f=fopen("c:\\filename.txt","w") ;
fputs (fname,f );

pan18 2011-05-30
  • 打赏
  • 举报
回复
谢谢 CrackValue,好像这是唯一的办法。
CrackValue 2011-05-30
  • 打赏
  • 举报
回复
argv[0],程序的完全路径名
名字你可以解析出来,
main函数声明:int main(int argc,char *argv[])
pan18 2011-05-30
  • 打赏
  • 举报
回复
我想该运行程序,并把该程序名写入一个文件。
CrackValue 2011-05-30
  • 打赏
  • 举报
回复
2楼的在dos下也适用
pan18 2011-05-30
  • 打赏
  • 举报
回复
是dos下的,谢谢。有dos下的方法吗?
ljt3969636 2011-05-30
  • 打赏
  • 举报
回复
你需要关心argv[0]这个main函数参数,他会记录程序的完全路径名,你只需要提取出文件名就可以了

char   path_buffer[_MAX_PATH]; 
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];


_splitpath(argv[0], drive, dir, fname, ext );
printf("Filename:%s\n ",fname );
zhanshen2891 2011-05-30
  • 打赏
  • 举报
回复
如果是windows的话可以用api

GetModuleFileName

第一个参数设为 NULL

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧