What does
while (c != sk.sz)
{
newbuff[c] = strtol(&buff[c], NULL, 16);
printf("%lx\n", newbuff[c]);
c=c+3;
}
display?
Until you fix your read process into something like this instead of that convoluted mess, I'm done, too. Unless you can give me a good reason for code like that.