编译此线

    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”的长度,作为第二个参数。  字符串指针/阵列名称的名称就足够了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top