DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   Skip initial 4 bytes in a binary stream (http://www.daniweb.com/forums/thread89941.html)

eranga262154 Sep 18th, 2007 2:17 am
Skip initial 4 bytes in a binary stream
 
I have a binary file, contain set of stream, and I want to find some information there. What I have done up to now is read the file, open it and count the number of streams three. I'm stuck now.

Just consider one stream. I want to skip first 4 bytes and read the next 4 bytes. The second 4 bytes gives the length of the next part and that is the end of one stream. Same process should follows until EOF is found. My question is how to skip that first 4 bytes and point to the next byte.

Salem Sep 18th, 2007 3:24 am
Re: Skip initial 4 bytes in a binary stream
 
Just read 4 bytes and don't store the result ?

Or use a 'seek' function to advance the stream by 4 bytes ?

A bit of code to fill us in on exactly what kind of stream you're talking about might help.

eranga262154 Sep 18th, 2007 3:37 am
Re: Skip initial 4 bytes in a binary stream
 
Ok' I'll put mu code here. Actually I have no important on first four bytes. I need to read next four byes. Here what I have tried up to now.

#include <iostream>
#include <fstream>

using namespace std ;

int main ()
{
        ifstream fileopen ;
        char buffer[100 ] ;
        char c ;

        fileopen.open ( "G00046_002_01.srf", ios :: in | ios :: out | ios :: binary ) ;

        if(fileopen.is_open())
        {
                fileopen.seekg(0, ios :: beg) ; // Move pointer to the beginning
                while(!fileopen.eof())
                {
                        fileopen.read(buffer, 50) ;
                        fileopen.seekg(4) ;
                        fileopen >> c ;        // Just to check the file read correctly
                        cout << c << endl ;

                      // Now I want to read the next 4 bytes here

                }
                fileopen.close() ;
        }

        else
        {
                cout << "Unable to open the file\n" ;
        }


        cin.get() ;
        return 0 ;
}

What is your suggestion for me.
Help appreciate

Ancient Dragon Sep 18th, 2007 9:07 am
Re: Skip initial 4 bytes in a binary stream
 
line 16 is not needed because the file pointer is always set to beginning of file when the file is opened -- line 12.

line 17 is an infinite loop because lines 19 and 20 reset the file pointer back to the 4th byte in the file on every loop iteration. Suggestion: delete line 19 altogether because it isn't needed. Move line 20 outside the while loop, to line 16.

don't use eof() function because it doesn't do what you think it does. Code the loop like this
while( fileopen >> c)
{
  // blabla
}

eranga262154 Sep 19th, 2007 12:39 am
Re: Skip initial 4 bytes in a binary stream
 
Thanks, I'll work with your suggestion and if I found any difficulties right back here.


All times are GMT -4. The time now is 2:24 am.

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