首页 > 解决方案 > C : 我可以 Snprintf(buffer,buffersize,buffer,..) 吗?

问题描述

我有一个像这样托管我的“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,...)

或者也许还有其他想法?

标签: cprintfbuffer

解决方案


推荐阅读