Ожидается, что вы будете использовать, например, %.254s
или, в вашем случае, %.221s/%.32s
, чтобы явно указать, что вы собираетесь обрабатывать только первые 254 символа параметра в любом случае.
Это предупреждение Предполагается, что вы не получите неожиданно обрезанную строку на стороне вывода, а скорее усечете ввод значимым образом.
В качестве альтернативы вы должны проверить возвращаемое значение snprintf
. Если отрицательное, значит, вывод был усечен.
GCC9 предупредит вас, если вы не усекали ввод (гарантируя, что никакое усечение вывода не могло произойти), и не выполнили обработку ошибок в случае обрезания вывода.
В вашем конкретном случае c это выглядит так, как будто вы строите путь (который бесполезен при усечении в любой форме), поэтому проверка возвращаемого значения snprintf
- это то, что вам на самом деле следует сделать.