All pastes #2133787 Raw Edit

Untitled

public text v1 · immutable
#2133787 ·published 2012-03-30 06:25 UTC
rendered paste body
mqudsi@debian:~/TripleHelix$ cat test.c
#include <string.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>

char *myPrintfInner(const char *message, va_list params)
{
	va_list args_copy;
	va_copy(args_copy, params);

    size_t length = vsnprintf(NULL, 0, message, args_copy);
    va_end(args_copy);
    
    char *final = (char *) malloc((length + 1) * sizeof(char));
    int result = vsnprintf(final, length + 1, message, params);

    printf("vsnprintf result: %d\r\n", result);
    printf("%s\r\n", final);

    return final;
}

char *myPrintf(const char *message, ...)
{
    va_list va_args;
    va_start(va_args, message);

    size_t length = vsnprintf(NULL, 0, message, va_args);
    char *final = (char *) malloc((length + 1) * sizeof(char));
    int result = vsnprintf(final, length + 1, message, va_args);

    printf("vsnprintf result: %d\r\n", result);
    printf("%s\r\n", final);

    //return final;
    va_end(va_args);

    return final;
}

int main(int argc, char **argv)
{
    char *test = myPrintf("This is a %s.", "test");
    char *actual = "This is a test.";
    int result = strcmp(test, actual);

    if (result != 0)
    {
        printf("%d: Test failure!\r\n", result);
    }
    else
    {
        printf("Test succeeded.\r\n");
    }

    return 0;
}
mqudsi@debian:~/TripleHelix$ gcc  -Wall --std=c99 test.c -o test && ./test 
vsnprintf result: 17
This is a �v�s�
14: Test failure!
mqudsi@debian:~/TripleHelix$