如何修复gcc -wall“嵌入''格式“警告”

问题描述 投票:0回答:1
这可能不是很关键,但是我试图解决所有警告G ++都在抱怨。在下面的代码中,我会在SNPRINTF()Line中获得“嵌入式”警告。

我可以解决这个问题吗?

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

提前感谢...
    

警告有一个充分的理由:
c++ gcc g++ warnings
1个回答
21
投票
会认为

\0

标志着字符串的末端。如果您实际上需要打印零,则不能将其直接嵌入字符串中。出于这个原因,C字符串不能包含空字符。这是最明显的解决方法:
snprintf(filePath,filePathSize,"%s%s%c",path.c_str(),s.c_str(),'\0');

不需要手动添加零终端,因为
snprintf
总是自动包含

\0

(请参阅manpage)。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.