在这里我将得到4,5,6,25的输出。
如何一次性打印结构中的所有成员,而不是每次访问结构中的单个成员。
比如我需要行的输出为[4 5 6],年龄为25。
请帮忙!

#include<stdio.h>

typedef struct person
{
  int row[3];
  int age;
} PERSON;

int main()
{
  PERSON p;
  PERSON *pptr=&p;
  pptr->row[0] = 4;
  pptr->row[1] = 5;
  pptr->row[2] = 6;
  pptr->age = 25;
  printf("%d\n",pptr->row[0]);
  printf("%d\n",pptr->row[1]);
  printf("%d\n",pptr->row[2]);
  printf("%d\n",pptr->age);
  return 0;
}

最佳答案

如果使用glibc(GNU libc,因此仅在使用gcc时可用,虽然不是portbale),则可以定义和注册用于glibc实现printf系列函数的“新”转换说明符,这些函数能够满足OP的要求。
欲了解更多信息,请阅读此处:http://www.gnu.org/software/libc/manual/html_node/Registering-New-Conversions.html#Registering-New-Conversions和此处:http://www.gnu.org/software/libc/manual/html_node/Defining-the-Output-Handler.html#Defining-the-Output-Handler
这里有一个例子:http://www.gnu.org/software/libc/manual/html_node/Printf-Extension-Example.html#Printf-Extension-Example

10-06 06:05