Avertissements à l'aide de chaînes de format avec sprintf() en C++

De la compilation de ces lignes

    long int sz;
    char tmpret[128];

    //take substring of c, translate in c string, convert to int, 
    //and multiply with 1024
    sz=atoi(c.substr(0,pos).c_str())*1024;

    snprintf(tmpret,128,"%l",sz); 

J'ai lu deux avertissements sur snprintf ligne:

 warning: conversion lacks type at end of format
 warning: too many arguments for format

Pourquoi? Le type est spécifié (long int sz, et %l dans snprintf) et l'argument de snprintf est seul. Quelqu'un peut-il m'aider? Merci.

OriginalL'auteur Emilio | 2008-12-03