在 C 中的字符串中添加双引号

Add double quotes in a string in C

我有这个检索可执行文件路径的 C 代码。

char buffer[300];
char *appPath;

GetModuleFileName(NULL,buffer,300);
appPath = buffer;
MessageBox(NULL,appPath,"path",MB_OK);

那个代码 returns 一个消息框包含例如

C:\myexe.exe

我正在努力做到 return :

"C:\myexe.exe"

已经在这些帖子上找到并尝试了解决方案1 and 2,但它们与我的问题不兼容。

有什么提示吗?

snprintf 创建一个新字符串如何?

char somestr[..];
snprintf(somestr, sizeof somestr, "\"%s\"", appPath);

你可以简单地这样做:

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] = '[=10=]'; //< Now add the [=10=] back
appPath = buffer;
MessageBox(NULL,appPath,"path",MB_OK);

请注意,这里仍然没有错误检查以防万一 GetModuleFileName 失败,您可能需要添加一些。 这段代码应该 运行 比调用某些 libc 字符串函数更快,但如果您觉得它更难阅读,它可能不是最佳选择。