is there an easier way?

Tim Daneliuk tundra at tundraware.com
Mon Feb 18 23:30:09 UTC 2008


Tim Daneliuk wrote:
> Gary Kline wrote:
>>     To my fellow C nerds,
>>
>>     It's been a  great manny years since I wrote this appended
>>     snippet.  Now I can't remember why (of if ) I need all the
>>     strcpy() calls.   Is there a simpler, more logical way of 
>>     printing a bunch of string by snipping off the left-most?
>>
>>     In short,, can anyone 'splain why strtok needs all this?
>>
>>     tia,
>>
>>     gary
>>
>>
> 
> I don't think you need the copies.  This works just as well:
> 
> #include <stdio.h>
> #include <string.h>
> 
> main()
> {
>   char *bp, *tok;
>   char *delim=" ", s1[256]="abc def ghi jkl mno.";
> 
>   bp = s1;   /* Now both point to the literal string to be tokenized */
> 
>   while ((tok = strtok(bp, delim)) != NULL)
>   {
>     bp = NULL;
>     printf("tok = [%s]\n", tok);
>   }
> }
> 


Ooops ... wasn't paying attention.  While the printed output is the same, doing
it this way is destructive to the original s1 string - which may matter (or not)...



-- 
----------------------------------------------------------------------------
Tim Daneliuk     tundra at tundraware.com
PGP Key:         http://www.tundraware.com/PGP/



More information about the freebsd-questions mailing list