【问题标题】:printf member of structprintf 结构的成员
【发布时间】:2015-01-29 23:05:57
【问题描述】:

我在使用 printf 打印结构的单个成员时遇到问题。 我有一个由 char 数组组成的结构。当尝试像这样打印单个成员时:

printf("%s", header.oscar_fname);

它打印整个结构。我无法弄清楚我哪里出错了。

【问题讨论】:

  • 这看起来像是来自 cs344 的赋值...@i486 可能是正确的,如果您按照课堂上的说明阅读结构,则 oscar_fname 末尾不会有空终止符,这将导致printf 打印整个结构。
  • @Jacobm001:除非被正确询问,否则格式不同。

标签: c struct printf


【解决方案1】:

您必须显示结构定义以及如何分配值。但我 90% 确定您没有为结构成员终止零字节,因此printf 打印所有以下成员。使用strcpy 设置成员值或将最后一个字节/字符设置为0:header.oscar_fname[sizeof header.oscar_fname - 1] = 0

【讨论】:

    【解决方案2】:
    printf("%.*s", (int)sizeof header.oscar_fname, header.oscar_fname);
    

    打印指定数组的内容,如果存在,则最多为 0 终止符。

    man printf 提供所有选项。

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多