1,105,263 Community Members


Member Avatar
Posting Pro
572 posts since Feb 2012
Reputation Points: -4 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 9 [?]
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


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
Master Poster
798 posts since Mar 2010
Reputation Points: 582 [?]
Q&As Helped to Solve: 132 [?]
Skill Endorsements: 12 [?]

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.

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