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

Edited 4 Years Ago by hwoarang69

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 six months. Start a new discussion instead.