使用格式字符串在C的sprintf()警告++
题
编译此线
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);
我读取的两个上的snprintf行警告:
warning: conversion lacks type at end of format
warning: too many arguments for format
为什么呢?类型被指定(长整型SZ,和%升中的snprintf)和snprintf的参数是唯一的一个。有谁能够帮助我?感谢。
解决方案
您格式缺少类型,因为L是“的sizeof”改性剂。应%LD
其他提示
boost::lexical_cast<string>(sz)
是好得多,无论如何。
请参阅的此列表 printf格式指定符
它是%升注释:
在参数被解释为一个长 int或unsigned long int类型为整数 说明符(I,d,O,U,X和X),和 为宽字符或宽字符 字符串符c和s。
INT的sprintf(字符* STR,常量字符*格式,...);
它不需要“STR”的长度,作为第二个参数。 字符串指针/阵列名称的名称就足够了。
不隶属于 StackOverflow