Ваша лучшая ставка, вероятно, заключается в следующем:
double array[10] = { 25.66, 87.51, 38.53, 26.59, 85.54, 47.82, 69.68, 27.79, 21.98, 12.80, };
enum { NUM_ARRAY = sizeof(array) / sizeof(array[0]) };
char buffer[1024];
int integer = 3141592;
int offset = 0;
int nbytes = snprintf(buffer + offset, sizeof(buffer) - offset, "%d", integer);
if (nbytes < 0) { …report error and stop processing… }
offset += nbytes;
for (int i = 0; i < NUM_ARRAY; i++)
{
nbytes = snprintf(buffer + offset, sizeof(buffer) - offset, " %lf", array[i]);
if (nbytes < 0) { …report error and stop processing… }
offset += nbytes;
}
Строго, код должен проверять nbytes >= sizeof(buffer) - offset
, чтобы убедиться в отсутствии усечения.
Считаете ли вы, чтопроще другое дело.Однако он гораздо более гибкий, чем оригинал (или обладает потенциалом быть более гибким).Если вам нужно вывести только 8 или большое количество значений, то (с соответствующей упаковкой в функции) вы можете обработать все варианты.Вы можете играть в различные другие приемы, например, убедиться, что строка вывода не станет длиннее, чем N байтов, вставить новую строку и, возможно, некоторые начальные отступы.Небо это предел.