[英]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.