我猜的東西像這樣更符合你的要求。它不像它可能的那樣簡潔,但它非常簡單,可以很容易地擴展到適應其他結構。
void WriteIndent(FILE* file, int indent) {
int i = 0;
while (i < indent) {
fprintf(file, "\t");
++i;
}
}
void WriteStructSub(FILE* file, StructSub* s, char* id, int indent) {
WriteIndent(file, indent);
fprintf(file, "StructSub %s {\n", id);
WriteIndent(file, indent + 1);
fprintf(file, "id = %i;\n", s->id);
WriteIndent(file, indent);
fprintf(file, "}\n");
}
void WriteMyStruct(FILE* file, MyStruct* s, char* id, int indent) {
WriteIndent(file, indent);
fprintf(file, "MyStruct %s {\n", id);
int i = 0;
while (i < 3) {
char name[7];
sprintf(name, "sub[%i]", i);
WriteStructSub(file, &s->sub[i], name, indent + 1);
++i;
}
WriteIndent(file, indent);
fprintf(file, "}\n");
}
int main(int argc, char** argv) {
MyStruct s;
int i = 0;
while (i < 3) {
s.sub[i].id = i;
++i;
}
FILE* output = fopen("data.out", "w");
WriteMyStruct(output, &s, "main", 0);
fclose(output);
}
謝謝,這有幫助! – Midas 2010-09-27 17:27:39