Если разделение одиночного sprintf
на 50 переменных является единственной проблемой, то вы можете использовать несколько вызовов sprintf
и использовать возвращаемое значение для вычисления позиции буфера для следующей части.
непроверенный пример
int chars;
int pos = 0;
chars = sprintf(buffer+pos, "%s", one);
if(chars > 0) pos += chars;
chars = sprintf(buffer+pos, ",%s", two);
if(chars > 0) pos += chars;
chars = sprintf(buffer+pos, ",%d", three);
if(chars > 0) pos += chars;
...
Конечно, вы можете использовать более одного значения для sprintf
chars = sprintf(buffer+pos, "%s,%s,%d", one, two, three);
if(chars > 0) pos += chars;
Обратите внимание, что код не предотвращает возможное переполнение буфера. Вы можете использовать snprintf
, чтобы исправить это, но с snprintf
код возврата немного сложнее обрабатывать.
Если все, что вы хотите сделать с объединенным буфером, - это записать его в файл, вы можете напрямую fprintf
отдельные значения, чтобы избежать возможной проблемы переполнения буфера.
fprintf(File, "%s,",deviceSerialNum);
fprintf(File, "%s,", one);
fprintf(File, "%s,", two);
fprintf(File, "%d,", three);
/* ... */
fprintf(File, "%d\n", last);