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

Edited by hwoarang69

4 Years
Discussion Span
Last Post by Banfa

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.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.