2

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

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 语句。有没有其他方法可以通过指定结构变量或其他方式来打印整个结构?

4

2 回答 2

6

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

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

于 2013-03-26T17:44:17.223 回答
-1

我能想到的一种可能的解决方案是,您可以借助 fread 功能,您可以使用它一次将结构的全部内容保存到一个临时文件中。使用:

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

STRUCTURE_OBJECT您的结构的数据元素的名称在哪里。然后使用“cat”和“piping”等基于linux的命令来快速浏览输出。

于 2016-12-22T13:32:34.950 回答