Reputation: 4031
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.
Upvotes: 2
Views: 12348
Reputation:
int sprintf ( char * str, const char * format, ... );
It does not require the length of "str", as the second argument. The name of the string pointer/ array name is enough.
Upvotes: -1
Reputation: 47462
See this list of printf format specifiers
It's comment for %l is:
The argument is interpreted as a long int or unsigned long int for integer specifiers (i, d, o, u, x and X), and as a wide character or wide character string for specifiers c and s.
Upvotes: 0
Reputation: 4369
Your format lacks type, because l is a "sizeof" modifier. Should be %ld
Upvotes: 8