#include #include #include #include char *InnerAdd(const char *message, va_list params) { char mask[] = "%s\r\n"; size_t length = vsnprintf(NULL, 0, mask, params); //char *final = (char *) malloc((length + 1) * sizeof(char)); char *final = (char *) malloc(1024); int result = vsnprintf(final, length + 1, mask, params); printf("vsnprintf result: %d\r\n", result); printf("%s", final); return final; } char *AddLine(const char *message, ...) { va_list va_args; va_start(va_args, message); InnerAdd(message, va_args); va_end(va_args); } int main(int argc, char **argv) { char message[] = "This is a test."; if (strcmp(AddLine(message), "This is a test.\r\n") != 0) { printf("Test failure!\r\n"); } else { printf("Test succeeded.\r\n"); } return 0; }