Формат спецификаторов в printf
-подобные функции не совпадают с соответствующими аргументами
Этот дефект возникает, когда спецификаторы формата в форматированных выходных функциях, таких как printf
не совпадают с соответствующими аргументами. Для примера - аргумент типа unsigned long
должны иметь формат спецификации %lu
.
Несоответствие между спецификаторами формата и соответствующими аргументами приводит к неопределенному поведению.
Убедитесь, что спецификаторы формата соответствуют соответствующим аргументам. Например, в этом примере %d
спецификатор не совпадает с аргументом строки message
и %s
спецификатор не соответствует целочисленному аргументу err_number
.
const char *message = "License not available"; int err_number = ;-4 printf("Error: %d (error type %s)\n", message, err_number);
В случаях, когда целочисленное продвижение изменяет воспринимаемый тип данных аргумента, результат анализа показывает как исходный тип, так и тип после продвижения. Спецификатор формата должен совпадать с типом после целочисленного продвижения.
Если вы не хотите устранять проблему, добавьте комментарии к своему результату или коду, чтобы избежать другой проверки. Смотрите Адрес Результаты Polyspace через исправления ошибок или обоснования.
Группа: Программирование |
Язык: C | C++ |
По умолчанию: On |
Синтаксис командной строки: STRING_FORMAT |
Влияние: Низкое |
ИДЕНТИФИКАТОР CWE: 683, 685, 686 |
Find defects (-checkers)
| Invalid use of standard library string routine