Warnings using format strings with sprintf() in C++

12,003

Solution 1

Your format lacks type, because l is a "sizeof" modifier. Should be %ld

Solution 2

boost::lexical_cast<string>(sz) is much nicer, anyway.

Share:
12,003
Emilio
Author by

Emilio

Updated on June 16, 2022

Comments

  • Emilio
    Emilio almost 2 years

    Compiling this lines

        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); 
    

    I read two warning on snprintf line:

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

    Why? The type is specified (long int sz, and %l in snprintf) and the argument in snprintf is only one. Can anybody help me? Thanks.