質問: [c] 構造体メンバーのカンマ区切り出力 構造体メンバーのカンマ区切り出力をしたいと思っています。 たとえば struct xxx { char name[20]; char address[40]; char tel[12]; ... 100メンバーくらいある } のような構造体があったとします。 printf("%s,%s,%s\n", s_ptr->name, s_ptr->address, s_ptr->tel); などのようにメンバー名(変数名)を参照せずに、構造体のメンバーへのポインタを順次取得しループして出力するなどして、実現することは可能でしょうか?
回答: いっそのこと構造体を typedef で型にしてからその配列にアクセスするという方法はどうです? ************************************************* #include typedef struct { int hoge; int piyo; char name[64]; } data; int main(void){ int i; data data[] = { { 10, 20, "hoge" }, { 20, 30, "piyo" }, { 30, 40, "name" } }; for( i = 0; i < 3; i++ ){ printf( "%d,%d,%s\n", data[i].hoge, data[i].piyo, data[i].name ); } return 0; } ************************************************* これなら動的に確保することも容易ですし。