Что означает это утверждение?printf ("[%. * s]", (int) length [i], - PullRequest
3 голосов
/ 14 марта 2011

Я читал эту страницу http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html есть одна строка

printf("[%.*s] ", (int) lengths[i],
              row[i] ? row[i] : "NULL");

из кода

    MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;

num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
   unsigned long *lengths;
   lengths = mysql_fetch_lengths(result);
   for(i = 0; i < num_fields; i++)
   {
       printf("[%.*s] ", (int) lengths[i],
              row[i] ? row[i] : "NULL");
   }
   printf("\n");

}

что означает [%.*s] в этом коде?

Ответы [ 3 ]

7 голосов
/ 14 марта 2011

[%.*s] - это строка формата printf, означающая:

  • первый аргумент должен быть целым числом (определяющим максимальную длину строки для печати).
  • второйАргументом должна быть сама строка.
  • [ и ] (и конечный пробел) передаются как есть.

Обычно вы видите что-то вроде .7s что означает 7-символьную строку.Использование * для длины означает получение его из заданного аргумента.

Итак, вся эта строка делает вывод строки, длина которой находится в lengths[i], и значениеиз которых row[i] (если row[i] не равно NULL, в этом случае используется буквенная строка "NULL").

1 голос
/ 14 марта 2011

%.*s - строка выходного формата.

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL"); 

Конкретно в этом случае это означает печать второго аргумента (содержимое row[i] или 'NULL', если содержимое row[i] оценивается как ложное) с максимумом lengths[i] символов. Квадратные скобки не являются частью форматирования, они печатаются сами по себе

0 голосов
/ 14 марта 2011

часть [%.*s] является строкой формата для printf.

указывает, что printf() должен выводить строку (row[i]), но должен ограничивать вывод длиной, указанной параметром (length[i]). выходная строка заключена в квадратные скобки.

см. Документацию printf() для получения дополнительной информации о строках формата.

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