这句话是什么意思?printf("[%.*s]",(int)length [i],

Viv*_*oel 3 c

我正在阅读这个页面 http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html 有一行

printf("[%.*s] ", (int) lengths[i],
              row[i] ? row[i] : "NULL");
Run Code Online (Sandbox Code Playgroud)

来自代码

    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");
Run Code Online (Sandbox Code Playgroud)

}

[%.*s]那段代码意味着什么?

pax*_*blo 7

[%.*s]printf格式字符串,意思是:

  • 第一个参数应该是一个整数(指定要打印的字符串的最大长度).
  • 第二个参数应该是字符串本身.
  • [](和后空间)被转移原样.

通常情况下,您会看到类似.7s7个字符的字符串.*长度的使用意味着从给出的论证中获取它.

那么整行的作用是打印一个字符串,其长度在其中lengths[i],并且其值是row[i](除非row[i]是NULL,在这种情况下它使用文字字符串"NULL").

  • 方括号除外.这些只是文字方括号. (2认同)