предупреждение: флаг «0» игнорируется с точностью и форматом «% i» gnu_printf - PullRequest
2 голосов
/ 28 мая 2010

Я получаю следующее предупреждение при компиляции устаревшего кода C в Ubuntu Karmic, используя gcc 4.4.1

Предупреждение:

src / filename.c: 385: предупреждение: флаг '0' игнорируется с точностью и "% I" формат gnu_printf

Фрагмент, из-за которого выводится предупреждение:

 char     buffer[256] ;
 long     fnum ;
 /* some initialization code here ... */
 sprintf(buffer, "F%03.3i.DTA", (int)fnum);  /* <- warning emitted here */

Я думаю, что понимаю предупреждение, но я хотел бы проверить здесь, чтобы убедиться, что я прав, а также (определенный) правильный способ решения этой проблемы.

1 Ответ

3 голосов
/ 28 мая 2010

со страницы руководства printf(3):

   0      The value should be zero padded.  For d, i, o, u, x, X, a, A, e,
          E,  f, F, g, and G conversions, the converted value is padded on
          the left with zeros rather than blanks.  If the 0  and  -  flags
          both  appear,  the  0  flag is ignored.  If a precision is given
          with a numeric conversion (d, i, o, u, x, and X), the 0 flag  is
          ignored.  For other conversions, the behavior is undefined.

Таким образом, вы можете указать либо нулевую, либо минимальную цифру, но не обе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...