繁体   English   中英

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

[英]What does this statement mean ? printf(“[%.*s] ”, (int) lengths[i],

我正在阅读这个页面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]在该代码中的含义是什么?

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

  • 第一个参数应该是一个整数(指定要打印的字符串的最大长度)。
  • 第二个参数应该是字符串本身。
  • [] (和尾随空格)按原样传输。

通常情况下,您会看到类似.7s ,这意味着7个字符的字符串。 使用*表示长度意味着从给出的参数中获取它。

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

%.*s是输出格式字符串。

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

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

具体地说,在这种情况下,它意味着打印第二个参数( row[i]或'NULL'的内容,如果row[i]评估为false),最大lengths[i]字符。 方括号不是格式的一部分,它们自己打印

[%.*s]部分是printf的格式字符串。

它指定printf()应输出一个字符串( row[i] ),但应将输出限制为参数( length[i] )指定的length[i] 输出字符串括在方括号内。

有关格式字符串的更多信息,请参阅printf()文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM