Assuming that tokens[3] contains "1234567890"
following happens:
after strcpy(xpto, tokens[3]) xpto has "1234567890"
after strncpy(var3_4, xpto+2, 2) var3_4 has "34..garbage.." - do not forget that strncpy does not insert terminating 0.
What about var1_2 - you don't show how it is populated.
I suggest:
memset(var1_2, 0, sizeof(var1_2));
memset(var3_4, 0, sizeof(var3_4));
strncpy(var1_2, xpto, 2);
strncpy(var3_4, xpto + 2, 2);
if(strcmp(var1_2, "00"

)
printf("not equal);
else
printf("equal"

;
etc...
OR
if(*var1_2 == '0' && *(var1_2 + 1) == '0')
printf("equal"

; etc...