在c程序中,如何获取.exe文件的完整路径?

在c程序中,如何获取.exe文件的完整路径?,c,C,这是我正在编写的代码。程序需要进行哪些更改才能自动检测其exe文件路径并将其保存在字符串变量中 #include<stdio.h> #include<conio.h> #include<process.h> #include<dir.h> void main() { int check; char dirname[150], u_name[30]; printf("Enter a username:"); sc

这是我正在编写的代码。程序需要进行哪些更改才能自动检测其exe文件路径并将其保存在字符串变量中

#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<dir.h>

void main()
{

    int check;
    char dirname[150], u_name[30];

    printf("Enter a username:");
    scanf("%s",&u_name);

    strcpy(dirname,"C:/Users/Bilal/Desktop/");
    strcat(dirname,u_name);
    check = mkdir(dirname);

    if (!check)
    printf("Directory created\n");

    else
    {
        printf("Unable to create directory\n");
        exit(1);
    } 

    printf("\nPress any key to exit program");
    getch();
}
#包括
#包括
#包括
#包括
void main()
{
整数检查;
char dirname[150],u_name[30];
printf(“输入用户名:”);
scanf(“%s”和&u_名称);
strcpy(dirname,“C:/Users/Bilal/Desktop/”;
strcat(dirname,u_name);
check=mkdir(dirname);
如果(!检查)
printf(“创建的目录”);
其他的
{
printf(“无法创建目录\n”);
出口(1);
} 
printf(“\n按任意键退出程序”);
getch();
}
将告诉您exe从何处运行

#include <windows.h>
...
WCHAR dirname[1024];
GetModuleFileNameW(NULL, dirname, 1024);
将告诉您exe从何处运行

#include <windows.h>
...
WCHAR dirname[1024];
GetModuleFileNameW(NULL, dirname, 1024);

那么,问题是什么?您面临什么问题?使用
system()
gets()
,您首先应该有其他问题,但由于您的代码已经是Windows专用的,您可以使用。您需要查看
main
argv
参数。您正在声明
main()
,但它实际上需要参数:
main(int-argc,char*argv[])
。检查
argv[0]
以获取程序的
.exe
文件的路径。我在这里看不到问题。你只需要陈述一个目标。哎呀,你的代码充满了漏洞。您的编译器不仅应该大声叫您不要使用
gets()
,而且还可以用幻数声明缓冲区,并且在任何地方都没有长度检查!那么,问题是什么?您面临什么问题?使用
system()
gets()
,您首先应该有其他问题,但由于您的代码已经是Windows专用的,您可以使用。您需要查看
main
argv
参数。您正在声明
main()
,但它实际上需要参数:
main(int-argc,char*argv[])
。检查
argv[0]
以获取程序的
.exe
文件的路径。我在这里看不到问题。你只需要陈述一个目标。哎呀,你的代码充满了漏洞。您的编译器不仅应该大声叫您不要使用
gets()
,而且还可以用幻数声明缓冲区,并且在任何地方都没有长度检查!你必须先去掉实际的文件名!你必须先去掉实际的文件名!