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

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

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