在 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 字符串函数更快,但如果您觉得它更难阅读,它可能不是最佳选择。
我有这个检索可执行文件路径的 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 字符串函数更快,但如果您觉得它更难阅读,它可能不是最佳选择。