这可能不是很关键,但是我正在尝试修复g++提示的所有警告。在下面的代码中,我收到snprintf()行的“格式嵌入'\0'”警告。

我怎样才能解决这个问题?

    int filePathSize = path.size() + s.size() + 1;
    char filePath[filePathSize];
    snprintf(filePath,filePathSize,"%s%s\0",path.c_str(),s.c_str());

提前致谢...

最佳答案

出现警告的原因很充分:snprintf会认为\0标记了字符串的结尾。如果您确实需要打印一个null,则不能将其直接嵌入到字符串中;由于这个原因,C字符串不能包含空字符。这是最明显的解决方法:

snprintf(filePath,filePathSize,"%s%s%c",path.c_str(),s.c_str(),'\0');

09-06 03:52