Как исправить gcc -Wall "embedded" \0 'в формате "предупреждение

Это может быть не очень важно, однако я пытаюсь исправить все предупреждения, о которых 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 ответ

Предупреждение существует по уважительной причине: snprintf будет думать, что \0 обозначает конец строки. Если вам действительно нужен нуль для печати, вы не можете вставлять его прямо в строку; Строки C не могут содержать нулевые символы именно по этой причине. Это наиболее очевидное решение:

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

licensed under cc by-sa 3.0 with attribution.