DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C (http://www.daniweb.com/forums/forum118.html)
-   -   fread problem? (http://www.daniweb.com/forums/thread3340.html)

red_evolve Feb 24th, 2004 11:46 am
fread problem?
 
Hi. Can anyone help me to distinguish the reason behind this case? Thanks a lot.
I initialized the following variable: unsigned char temp=0;
In the following statement block, I managed to get the results that I wanted to be displayed on the first go (traversing the while loop on the first run).
However, on the 2nd run, the temp being printed equals to the last temp printed in the first run.

while
{
// other print statements
// statement to get rlen
for(i=0; i<rlen; i++)
{
fread( (char*) &temp, sizeof(temp), 1 ,input);
printf("%x ", temp);
}
}


I've thought of it might be because of pointer problems? I am not sure. I am not any good at this, just a beginner. Please help. Thanks.

r0ckbaer Feb 24th, 2004 1:31 pm
Re: fread problem?
 
for (int i = 0; i < rlen; i++)
{
  printf("%x\n", fgetc(input));
}

do it that way

red_evolve Feb 24th, 2004 3:06 pm
Re: fread problem?
 
Thanks a lot for your reply.
I've tried and hey, the output differs, however it's still not what I expected it to be.

The first loop:
a1 b3 8 9a      // which is correct

The second loop:
9a 9a 9a 9a        // before r0ckbaer's advice

ffffff       // after applying to r0ckbaer's advice
ffffff
ffffff
ffffff

r0ckbaer Feb 24th, 2004 3:33 pm
Re: fread problem?
 
Well, normally fgetc gets one char per loop (in the above example) and increments the file pointer with 1, so:
a1 b3 8 9a
would be a result after 4 loops.
Be more specific on how you want the output to look like and if possible paste a snapshot of the hexdump of lets say the first 50 bytes of the file u want to analyze.

red_evolve Feb 25th, 2004 5:16 pm
Re: fread problem?
 
Well, it's a project for computer networks actually.
I am to capture packets using a program called windump, and then decode each field of information in their respective ethernet frame, ip frame, tcp/udp frame.
It seems that the results is not stable, in some packets, I could get the correct output, while not in some other packets.
Is it always like that? (Now, it seems like it has to be in the 'networking' topic & not c already!)
This is because, I strongly feel that there is no problem with the codes. I've got a comment from a coursemate that output will be more accurate using bigger packet files. :!: Please advise. Thanks.

infamous Mar 23rd, 2004 10:57 pm
Re: fread problem?
 
Quote:

Originally Posted by r0ckbaer
 for (int i = 0; i < rlen; i++)
 {
    printf("%x\n", fgetc(input));
 }

do it that way

this is wrong. you cannot just call functions without checking the error return of them. fgetc() can fail, and must be checked. and from the ff output u can tell that it is trying to tell u something!! that is EOF or error being returned! lets see the rest of the code.


All times are GMT -4. The time now is 12:32 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC