1,105,263 Community Members

strtok

Member Avatar
hwoarang69
Posting Pro
572 posts since Feb 2012
Reputation Points: -4 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 9 [?]
 
0
 
FILE *finp1 = file.txt 
--------------
web: add $1,$2,$3
     sub $4,$5,$6
end: .word 5
------------------

for some reason i can not go in my 2nd if statment. i think bc i am not using strtok right

------------------------------------------------code----------------

while(fgets(line, 20, finp1) != NULL)               //works
{
    tptr = strtok(line, ":");                          //works
        if(tptr != NULL)
           {
               if(strstr(line, ".word") == 0)        //i cant get in this if statment
                  {
                      tptr2 = strtok(line, " ");
                      tptr2 = strtok(NULL, "");
                      if(tptr2 != NULL)
                          {
                              //do some thing
                          }
                  }
           }
           else                                     //works
           {
           }
}
Member Avatar
Banfa
Master Poster
798 posts since Mar 2010
Reputation Points: 582 [?]
Q&As Helped to Solve: 132 [?]
Skill Endorsements: 12 [?]
Featured
 
0
 

When you called strtok at line 3 it replaced the ':' in line with a '\0' (because that is how it works). That reduces the string in line to "end" which does not contain ".word" and leaves tptr pointing at line. If you called strtok a second time then tptr will be updated to point at the rest of the string " .word 5" which does contain ".word".

On the whole I would recomend not using strtok at all because of this destruction of data and because it is not re-entrant. It is relatively easy to parse the strring yourself.

You
This article has been dead for over three months: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article