Спецификаторы формата в 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 |
Удар: низко |
ID CWE: 683, 685, 686 |
Find defects (-checkers)
| Invalid use of standard library string routine