• # asprintf est beau

    Posté par . En réponse au journal Asprintf. Évalué à 2.

    asprintf est beau mais y'a mieux, y'a asprintf_ : meilleure API (ah là là quand donc les gens arrêteront de coder tout en impératif borné..) et portable :

    -----------8<--------------------8<--------------------8<--------------------8<---------
    char * vasprintf_(const char *msg, va_list args)
    {
    char s[8192];
    vsnprintf(s, sizeof(s), msg, args);
    return strdup(s);
    }

    // _GNU_SOURCE's asprintf like, but
    // - doesn't need _GNU_SOURCE
    // - returns allocated string
    char * asprintf_(const char *msg, ...)
    {
    char * results;
    va_list arg_ptr;
    va_start(arg_ptr, msg);
    results = vasprintf_(msg, arg_ptr);
    va_end(arg_ptr);
    return results;
    }
    -----------8<--------------------8<--------------------8<--------------------8<---------

    (un peu de travail supplémentaire si on veut supporter les chaînes très longues)