如何修复gcc -Wall" embedded' \ 0'格式"警告

时间:2014-05-29 01:47:46

标签: c++ gcc g++ warnings

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

我该如何解决这个问题?

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

提前致谢...

1 个答案:

答案 0 :(得分:12)

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

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