我有这个C代码,用于检索可执行文件的路径。
char buffer[300];
char *appPath;
GetModuleFileName(NULL,buffer,300);
appPath = buffer;
MessageBox(NULL,appPath,"path",MB_OK);
该代码返回消息框包含例如
C:\ MYEXE.EXE
我试图让它回归:
" C:\ MYEXE.EXE"
已经在1和2这些帖子上找到并尝试了解决方案,但它们与我的问题不兼容。
任何提示?
答案 0 :(得分:6)
如何使用snprintf
创建新字符串?
char somestr[..];
snprintf(somestr, sizeof somestr, "\"%s\"", appPath);
答案 1 :(得分:2)
你可以这样做:
char buffer[302]; //< I assume you picked 300 for a reason, so 302 for the extra quotes
char *appPath;
int fileNameLen = GetModuleFileName(NULL,buffer+1,300);
buffer[0] = buffer[fileNameLen+1] = '"'; //< Wrap in quotes
buffer[fileNameLen+2] = '\0'; //< Now add the \0 back
appPath = buffer;
MessageBox(NULL,appPath,"path",MB_OK);
请注意,如果GetModuleFileName
失败,此处仍然没有错误检查,您可能需要添加一些错误。
这段代码应该比调用一些libc字符串函数运行得更快,但如果你发现它更难读,它可能不是最好的选择。