|
> switch部分がネックになっており,何とか
> switch部分を削除したいと思っております。
switch を削除すればいいんですね。関数を配列にしましょう。
#include <stdio.h>
FILE *fp1, *fp2, *fp3, *fp4, *fp5;
#define ARGS int i1, int i2, int i3, double d1, double d2, double d3
void p1(ARGS) { fprintf(fp1, "%d,%f\n", i1, d1); }
void p2(ARGS) { fprintf(fp2, "%d,%d,%f\n", i1, i2, d1); }
void p3(ARGS) { fprintf(fp3, "%d,%d,%f\n", i1, i2, d1); }
void p4(ARGS) { fprintf(fp4, "%d,%f,%f\n", i1, d2, d3); }
void p5(ARGS) { fprintf(fp5, "%d,%f,%f,%f\n", i1, d1, d2, d3); }
void (*print[])(ARGS) = { p1, p2, p3, p4, p5 };
int main(void)
{
int i, i1, i2, i3; double d1, d2, d3;
fp1 = fp2 = fp3 = fp4 = fp5 = stdout;
i1 = 1, i2 = 2, i3 = 3, d1 = 0.1, d2 = 0.2, d3 = 0.3;
for (i = 0; i < 5; i++){
/* i1〜i3,d1〜d3計算 */
print[i](i1, i2, i3, d1, d2, d3);
}
return 0;
}
|