在C中以String格式打印结构

时间:2013-03-26 17:38:32

标签: c

我的一项任务是,我有一项任务是以字符串格式打印下面的整个结构。

Struct test
{
    int a,
    char char1,char2;
}

输出应该是:结构是a = 10,char1 = b,char2 = c; 我知道使用

非常简单
printf("Structure is a=%d,char1=%c, char2= %c", s.a,s.char1,s.char2);

但实时,我有很多大结构,我不能为每个结构元素编写带访问说明符的printf语句。有没有其他方法来打印整个结构只需指定结构变量或其他?

2 个答案:

答案 0 :(得分:6)

在纯C中没有办法做到这一点。有些语言通过一个叫做反射的概念来支持这个,但它在C中不可用。

Code-that-writes-code是你最好的选择。编写一个脚本来查找所有结构并构建函数来printf它们。

答案 1 :(得分:-1)

我能想到的一个可能的解决方案是,您可以利用fread功能的帮助,您可以使用该功能将结构的整个内容立即保存到临时文件中。使用:

fread(&STRUCTURE_OBJECT, sizeof(YOUR_STRUCTURE), 1, FILE_POINTER);

其中STRUCTURE_OBJECT是结构数据元素的名称。 然后使用基于Linux的命令,如" cat"和"管道"等快速浏览输出。