У меня есть одна большая структура, в которой размещены мои "html-страницы":
char * HTML_PAGES_ARRAY[n];
, который я заполняю, например, на странице вроде:
HTML_PAGES_ARRAY[0] = "<h1> Hello %s <h/1>\0"
Теперь в моей дочерней программе я вызываю функцию, которая должна отправить массив обратно в основную программу, чтобы иметь возможность отправить массив обратно клиенту.
Так что мне нужно смоделировать потоковую передачу, потому что вся моя html-страница может не помещаться в массив. Кроме того, как вы видели, я хочу, чтобы html-страница настраивалась с помощью переменных аргументов.
Я хочу выделить как можно меньше памяти. (встроенное устройство)
Вот что я придумал
#define DEFAULT_BUFLEN 2000
char* str= malloc(sizeof(DEFAULT_BUFLEN));
memset(str, '\0', sizeof(DEFAULT_BUFLEN));
snprintf(str, strlen(HTML_PAGES_ARRAY[0]), HTML_PAGES_ARRAY[0], value1);
//answer being the first buffer I talked about, simulating streaming, to send it back to the main program
strcpy(answer, str+(*count-1)*(answerSize-1));
//count being a parameter (an integer to parse my html page), answerSize being the size of my stream buffer answer also placed as parameter
На самом деле все работает нормально, но я не хочу выделять этот буфер str.
Можно ли как-то этого не делать и вместо этого использовать snprintf
с тем же буфером (например: snprintf(buffer,buffersize,buffer,...)
)?
Или, может быть, есть другие идеи?