从您的评论中看来,您的结构体有很多元素,但您只想打印其中一些。以下是我的想法:
1)不要将此数组放入结构体中!它是静态的--对于任何struct status
,它永远不会改变,因此将其放在结构体中是浪费和不直观的。
2)您是否考虑将这些值分离到它们自己的结构体中?然后您可以使用以下范例:
enum status {
LASTINPUT_VAC,
INPUT_VAC,
OUTPUT_VAC,
OUTPUT_PWR,
OUTPUT_HZ,
BATT_LVL,
TEMPERATURE,
STATUS_MAX
};
struct system {
char name[MAXNAME];
long other_data;
float coords[2];
char *whatever_you_have_here;
int status[STATUS_MAX];
};
然后要打印/使用其中一个,您可以通过引用它来实现:
struct system sys;
int temp = sys.status[TEMPERATURE];
for (int i = 0; i < STATUS_MAX; i++)
printf("%d\n", sys.status[i]);
这可能不完全符合您的需求,但我只是想提供另一种在C语言中完成此类事情的方式。干杯!
std :: string
更改为char *
,并将cout
更改为printf
,但是使用offsetof
获得的偏移数组是重要的,这将保持不变。 - Jerry Coffin