[ILUG] nice C question...

Martin Donlon akawaka at csn.ul.ie
Wed Apr 11 17:09:15 IST 2001


First of all, you might want to actually zero terminate your list of
numbers:)

int nums[]={ 2, 76, 1282, 28182, 1232, 0 };
char big_string[255];
big_string[0]=0;

while( *nums ){
   snprintf( big_string, 254, "%s %d", big_string, *nums );
   nums++;
}

is porbably a bit safer

statements like *nums++!=0 are just plain evil and unneccesary, IMHO


On Wed, Apr 11, 2001 at 04:53:19PM +0100, John P. Looney wrote:
>  Given an array of integers, terminated with zero, what's the easiest way
> to make a string from it ?
> 
>  I thought this would do it, but it's not that neat..and it dumps core;
> 
>   int nums[]={2,76,1282,28182,1232};
>   char big_string[255];
>   char *tmp_ptr;
> 
>   big_string[0]=0;
>   tmp_ptr=big_string;
> 
>   while(*nums++!=0) {
>       /* start printing into the end of the previous output */
>       tmp_ptr=+(sprintf(tmp_ptr, "%s.%d",tmp_ptr,name) - 1);
>   }
> 
>   syslog(LOG_INFO, "big string is %s", big_string);
> 
>  Anyone care to do it better ?
> 
> Kate
> 
> -- 
>  When I say 'free', I mean 'free': free from bond, of chain or command: 
> to go where you will, even to Mordor, Saruman, if you desire. " 
>     -- Gandalf, paraphrasing the choice between Free and Non-free software
> 
> -- 
> Irish Linux Users' Group: ilug at linux.ie
> http://www.linux.ie/mailman/listinfo/ilug for (un)subscription information.
> List maintainer: listmaster at linux.ie

-- 
Martin
--
Bother! said Pooh, as he read the Generations script.




More information about the ILUG mailing list