在下面的代码中,%c%.8x
格式是什么意思?
例如,如果val
的值为8,那么该怎么回事?'?
int send_cmd(int fd, char cmd, int val) {
char buf[32];
int res;
snprintf(buf,32,"%c%.8x\n",cmd,val);
res = write (fd, buf, 10); // send X00000000<LF>
if (res == 10)
return 0;
else {
fprintf(stderr,"Did not send ten -> %d\n",res);
}
return -1;
}
答案 0 :(得分:2)
首先,我告诉您,%c%.8x
是两种不同的格式说明符,%c
和%.8x
。
那就是说,
%c
比较熟悉,打印所提供的int
参数的字符表示。
关于不太熟悉的%.8x
格式说明符,引用C11
,章节§7.21.6.1/ p4, precision 选项,(强调雷)
每个转换规范都由字符
%
引入。在%
之后,以下内容 按顺序出现:
- 可选精度,为
d
,i
提供最小显示位数,o
,u
,x
和X
次转化,小数点后显示的位数a
,A
,e
,E
,f
和F
次转化的字符,[...]精度采用的形式一段时期(.
)后跟一个 星号*
(稍后描述)或可选的十进制整数; [...]