1.11M Members

strtok

 
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
           {
           }
}
 
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.

Isn't it about time forums rewarded their contributors?

Earn rewards points for helping others. Gain kudos. Cash out. Get better answers yourself.

It's as simple as contributing editorial or replying to discussions labeled or OP Kudos

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