#define FMT "INSERT INTO data (v1, v2, v3, v4) VALUES ('%s', '%s', '%s', '%s')" #define NSTMTS 3 int i; char *stmts[NSTMTS]; for (i = 0; i < NSTMTS; i++) { size_t s; char *p; /* ... get data into the array f ... */ s = snprintf(NULL, 0, FMT, f[0], f[1], f[2], f[3]) + 1; assert((p = (char *)malloc(s)) != NULL); snprintf(p, s, FMT, f[0], f[1], f[2], f[3]); } /* ... do something with the statements ... */ for (i = 0; i < NSTMTS; i++) free(stmts[i]);