• # Re: tableau comme argument à vsprintf

    Posté par . En réponse au message tableau comme argument à vsprintf. Évalué à 3.

    La construction à la main d'un type va_list n'est pas du tout portable. Forcément sous Windows ça limite les choix, mais je parirai que le code qu'ils t'ont filé doit être hyper casse gueule. À ta place je reverrais légèrement ton "algo" :
    #define MAX 1024
    char buffer[MAX];
    int usage = 0;
    usage = sprintf(buffer, "%s", "UPDATE t_table set ");
    if (bon1)
    {
     // Hum, hum, fait gaffe à l'SQL injection hein ....
     usage += snprintf(buffer + usage, MAX - usage, " col1='%s',", param1);
    }
    if (bon2)
    {
     // Idem ici
     usage += snprintf(buffer + usage, MAX - usage, " col2='%s',", param2);
    }
    /* .... */
    C'est un poil plus complexe, parce qu'il y a vérification des débordements, mais si tu n'en a rien à foutre, tu pourras grandement simplifier le code ... Sinon, je ne sais pas quel SGBD tu utilises, main en général dans l'API d'accès à la base, il y a des fonctions toutes prêtes pour gérer beaucoup plus proprement ce genre de problèmes (PostgreSQL et SQLite au moins).