【问题标题】:what does the format %c%.8x mean in snprintfsnprintf 中的 %c%.8x 格式是什么意思
【发布时间】:2017-11-03 21:13:33
【问题描述】:

在下面的代码中,%c%.8x 格式是什么意思?

如果 val 的值为 8,那么 'buf' 中的内容是什么?

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;
}

【问题讨论】:

  • 这是两个格式说明符:"%c""%.8x"。至于每个意思我建议this printf (and family) reference.
  • 还有,你为什么不试试呢?
  • 你是 RTFM 吗?为什么不呢?
  • 请展示您迄今为止的研究/调试工作。请先阅读How to Ask页面。
  • @SouravGhosh 谢谢你的解释。

标签: c printf format-specifiers


【解决方案1】:

首先,让我告诉你,%c%.8x 是两个不同的格式说明符,%c%.8x

也就是说,

  • %c 更熟悉,打印提供的int 参数的字符表示。

  • 关于不太熟悉的 %.8x 格式说明符,引用 C11,第 §7.21.6.1/p4 章,precision 选项,(强调我的

    每个转换规范都由字符% 引入。在%之后,以下 依次出现:

    • 一个可选精度,为di提供出现的最小位数ouxX 转换,小数点后出现的位数 aAeEfF 转换的字符,[...] 精度采用句点 (.) 的形式,后跟一个 星号*(稍后描述)或可选的十进制整数; [...]

【讨论】:

    猜你喜欢
    • 2014-03-09
    • 2018-08-28
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2019-09-12
    • 2010-10-12
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多