تحذيرات استخدام سلاسل التنسيق مع sprintf () في C ++
سؤال
وتجميع هذه الخطوط
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 واحد فقط. أي شخص يمكن أن تساعدني؟ شكرا.
المحلول
وشكل ينقصه الكتابة، لل هو "sizeof" التعديل. ينبغي أن يكون٪ دينار
نصائح أخرى
وboost::lexical_cast<string>(sz)
هو أجمل بكثير، على أي حال.
وانظر لهذه القائمة من printf شكل محددات
وانها تعليق ل٪ ل هو:
<اقتباس فقرة>ويتم تفسير حجة كما طويل صحيح أو عدد صحيح طويل غير موقعة لعدد صحيح المحددات (ط، د، س، ش، س و X)، و كحرف واسعة أو حرف واسعة سلسلة لمحددات ج والصورة.
اقتباس فقرة>وsprintf الباحث (تشار * شارع، شار CONST * تنسيق، ...)؛
والأمر لا يتطلب طول "شارع"، كما الوسيطة الثانية. اسم مؤشر سلسلة اسم / مجموعة يكفي.
لا تنتمي إلى StackOverflow