Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C Programming (http://www.velocityreviews.com/forums/f42-c-programming.html)
-   -   question about va_list (http://www.velocityreviews.com/forums/t755072-question-about-va_list.html)

gaoqiang 10-24-2011 07:04 AM

question about va_list
 
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
int ssnprintf(char**arg,size_t n,const char*format,va_list va)
{
size_t len=snprintf(NULL,0,format,va);
len+=1;
if(len>n){
free(*arg);
*arg=malloc(len);
}
snprintf(*arg,len,format,va);
return 0;
}
int main()
{
char*p=NULL;
ssnprintf(&p,4,"abcdefgh%d",3);
printf("p= %s\n",p);
free(p);
return 0;
}


compile this program with gcc,I got
a.c:18: warning: passing argument 4 of 'ssnprintf' makes pointer from
integer without a cast
to say this line:
ssnprintf(&p,4,"abcdefgh%d",3);

then how to eliminate this warning ?

Ike Naar 10-24-2011 09:07 AM

Re: question about va_list
 
On 2011-10-24, gaoqiang <gaoqiangscut@gmail.com> wrote:
> #include <stdio.h>
> #include <stdlib.h>
> #include <stdarg.h>
> int ssnprintf(char**arg,size_t n,const char*format,va_list va)
> {
> size_t len=snprintf(NULL,0,format,va);
> len+=1;
> if(len>n){
> free(*arg);
> *arg=malloc(len);
> }
> snprintf(*arg,len,format,va);
> return 0;
> }


You cannot use snprintf() like that, look into vsnprintf().


All times are GMT. The time now is 05:54 PM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57