C: Могу ли я Snprintf (буфер, размер буфера, буфер, ..)? - PullRequest
0 голосов
/ 05 июля 2018

У меня есть одна большая структура, в которой размещены мои "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,...))?

Или, может быть, есть другие идеи?

...