我在使用printf打印结构的单个成员时遇到问题。 我有一个由char数组组成的结构。尝试打印这样的单个成员时:
printf("%s", header.oscar_fname);
它打印整个结构。我无法弄清楚我在哪里出错了。
答案 0 :(得分:3)
您必须显示结构定义以及如何分配值。但我90%肯定你没有为结构成员终止零字节,因此printf
打印所有后续成员。使用strcpy
设置成员值或将最后一个字节/ char设置为0:header.oscar_fname[sizeof header.oscar_fname - 1] = 0
。
答案 1 :(得分:1)
printf("%.*s", (int)sizeof header.oscar_fname, header.oscar_fname);
打印指定数组的内容,如果存在则最多为0-terminator。
man printf
提供了所有选项。