C-printf实现


void myprintf(const char *format,...)
{
    va_list argptr;//参数列表
    va_start(argptr, format);
    size_t ACTSIZE = _vscprintf(format, argptr);//内容长度,根据它给size赋值
    char*buffer = (char*)malloc(ACTSIZE + 1);//分配内存空间
    memset(buffer, 0, ACTSIZE + 1);//赋初值
    vsnprintf(buffer, ACTSIZE + 1, format, argptr);//将值加进去
           va_end(argptr);

    printf("%s\r\n", buffer);

    free(buffer);//释放内存
    buffer = nullptr;

}

int main()
{
   myprintf("%s,%s","123","456");

   char s1tr[2000];
   for(int i =0;i<2000;i++)
   s1tr[i]='a';

   s1tr[1999]=NULL;

   myprintf("111 %s",s1tr);

   return 0;

}

 

posted @ 2020-12-12 15:35  诺谦  阅读(580)  评论(5编辑  收藏  举报