gpt4 book ai didi

c - 在C中设置可执行目录中的文件名

转载 作者:行者123 更新时间:2023-11-30 14:36:10 26 4
gpt4 key购买 nike

我必须创建一个缓冲区来保存可执行目录中的许可证文件的名称。这是我的解决方案(我不是 C 程序员):

char buffer[MAX_PATH] = "";
GetModuleFileName(NULL, buffer, MAX_PATH);
int len = (int) strlen(buffer);
buffer[len-7] = '\0';
strcat(buffer,"license.lic");

注意,我知道可执行文件的名称是 net.exe - 7 个字符,所以我在作弊。

首先这个代码安全吗?我收到有关使用 strcat 的编译器警告,提示我应该使用 strcat_s,但我无法使其正常工作。

其次,如何获得可执行文件名称的正确长度?

最佳答案

您的代码相当安全。假设 MAX_PATH 是路径名的最大可能长度,用 license.lic 替换可执行文件名称应该适合该大小。

您可以搜索最后一个目录分隔符,然后在其后面复制 license.lic,而不是获取可执行文件名称的长度。 C 有一个内置函数 strrchr() 用于反向搜索字符串。

char *sepptr = strrchr(buffer, '\\');
if (sepptr == NULL) {
sepptr = buffer; // no directory delimiter, replace it completely
} else {
sepptr++; // point to just past the delimiter
}
strcpy(sepptr, "license.lic"); // Overwrite executable name with license name

关于c - 在C中设置可执行目录中的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58209406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com