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

时间:2015-01-07 12:01:09

标签: c string double-quotes

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

char buffer[300];
char *appPath;

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

该代码返回消息框包含例如

C:\ MYEXE.EXE

我试图让它回归:

" C:\ MYEXE.EXE"

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

任何提示?

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字符串函数运行得更快,但如果你发现它更难读,它可能不是最好的选择。