Connecting Tech Pros Worldwide Forums | Help | Site Map

Help With strtok

manochavishal@gmail.com
Guest
 
Posts: n/a
#1: Mar 14 '06
Hi
I am writing a Program
in which i get input as

#C1012,S,A#C1013,S,U


I want to get C1012,S,A using strtok and then pass this to function
CreateCopies
which will further strtok this (C1012,S,A) and store the required
values.


Now here is the piece of that code:


#define DELIM2 #
char * field;
char fieldcopy[20];


/*Here i have input as #C1012,S,A#C1013,S,U*/
field = strtok(NULL,DELIM2);
while(field != NULL)
{
strcpy(fieldcopy,field);
CreateCopies(copy,fieldcopy,NoCopies);
field = strtok(NULL,DELIM2);
printf("Field in CreateVideo is %s\n",field);



}


1.Now if I call CreateCopies the strtok doesn't tokenize till the end.
I get to call CreateCopies
only once.
2.But if i comment the CreateCopies call, it does tokenize till the end
and prints the rrquired vales.
In the first case the second time i call strtok 'field' gets a value of
NULL instead it should get the second token.

Why this behaviour???


Vladimir S. Oka
Guest
 
Posts: n/a
#2: Mar 14 '06

re: Help With strtok


On Tuesday 14 March 2006 09:18, manochavishal@gmail.com opined (in
<1142327881.390288.189360@p10g2000cwp.googlegroups .com>):
[color=blue]
> Hi
> I am writing a Program
> in which i get input as
>
> #C1012,S,A#C1013,S,U
>
> I want to get C1012,S,A using strtok and then pass this to function
> CreateCopies which will further strtok this (C1012,S,A) and store the
> required values.
>
> Now here is the piece of that code:
>
> #define DELIM2 #
> char * field;
> char fieldcopy[20];
>
> /*Here i have input as #C1012,S,A#C1013,S,U*/
> field = strtok(NULL,DELIM2);
> while(field != NULL)
> {
> strcpy(fieldcopy,field);
> CreateCopies(copy,fieldcopy,NoCopies);
> field = strtok(NULL,DELIM2);
> printf("Field in CreateVideo is %s\n",field);
> }
>
>
> 1.Now if I call CreateCopies the strtok doesn't tokenize till the end.
> I get to call CreateCopies only once.
> 2.But if i comment the CreateCopies call, it does tokenize till the
> end and prints the rrquired vales.
> In the first case the second time i call strtok 'field' gets a value
> of NULL instead it should get the second token.
>
> Why this behaviour???[/color]

You don't show or tell what `CreateCopies` does, but I'll bet you it
uses `strtok` as well. If it does, therein lies your problem. You're
"resetting" `strtok`. You have to finish tokenising the original string
with `strtok(NULL,...)` calls before calling `strtok` again with the
new string to parse.

--
BR, Vladimir

The average, healthy, well-adjusted adult gets up at seven-thirty in
the morning feeling just terrible.
-- Jean Kerr

manochavishal@gmail.com
Guest
 
Posts: n/a
#3: Mar 14 '06

re: Help With strtok


>You don't show or tell what `CreateCopies` does, but I'll bet you it[color=blue]
>uses `strtok` as well. If it does, therein lies your problem. You're
>"resetting" `strtok`. You have to finish tokenising the original string
>with `strtok(NULL,...)` calls before calling `strtok` again with the
>new string to parse.[/color]

Thanx that did solved my Problem.

I forgot to comment one strtok in CreateCopies.

Thanks again.

Closed Thread