Re: save array to file, read it back in



The ability to read the contents of binary files and dumps with "stuff" in them, although increasingly becoming a lost art, is still important in applications such as those employing serial comms.

A message 2n characters long will take twice as long to transmit as a message n characters long.

The same holds with shuffling messages around internally. Although modern-day computers are ultra-fast compared to their predecessors, the tendency to put everything into readable format means that a lot of time is wasted. It all adds up when the seemingly negligible time difference is multiplied by a factor of a zillion or so. The slow performance of many applications such as VS2005 is probably due in part to such tecniques.

Tom Serface wrote:
I just do it in ASCII since it's easier to see what's in the file and the reading and writing process usually doesn't take much time. I admit it's a matter of preference. I hate opening or viewing files with "stuff" in them and I can't tell what it is. If it were me, I'd either use the registry or some format like .ini or XML to save the information unless it's a temporary file in which case... um ... it wouldn't matter since they would be cleaned up.

Tom

"AliR" <AliR@xxxxxxxxxxxxx> wrote in message news:44db5b20$0$23771$a8266bb1@xxxxxxxxxxxxxxxxxxxxxx

Why write it as ASCI, he can simply write all the values out to the file and
then read them back in.

If it was me I would do it this way.

void SaveArray(CString Filename,unsigned char *pBuffer,long Size)
{
CFile File;
File.Open(Filename,CFile::modeCreate|CFile::modeWrite);

//first write out the array size
File.Write(&Size,sizeof(long));
//then write out the array
File.Write(pBuffer,sizeof(unsigned char) * Size);

File.Close();
}

unsigned char * ReadArray(CString Filename,long &Size)
{
CFile File;
File.Open(Filename,CFile::modeRead);

//first read the size
File.Read(&Size,sizeof(long));

//then create the array
unsigned char *pBuffer = new unsigned char[Size];

//now read the array back in
File.Read(pBuffer,sizeof(unsigned char) * Size);

File.Close();

return pBuffer;
}

AliR.

"Tom Serface" <tserface@xxxxxxx> wrote in message
news:%2302WYXJvGHA.3552@xxxxxxxxxxxxxxxxxxxxxxx

I would write it out in ASCI and then convert when reading back. Since

you

are using MFC (you posted to the MFC forum) you could also use CFile to

make

this easier.

Another idea would be to write the value to the registry so you don't have
the tiny file hanging around. Reading and writing to the registry is

really

quick.

Tom

"markww" <markww@xxxxxxxxx> wrote in message
news:1155177778.404846.41190@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Hi,

I just have an RGB volume buffer allocated like:

unsigned char pBuffer = new unsigned char[256 * 256 * 50 * 3];

and I'd like to dump it straight to a file so I can read it back in
exactly as above. Can I do something like this:

ofstream o("C:\\test.raw");
o << pBuffer;
o.close();

// Later on read it back in...
ifstream i("C:\\test.raw");

unsigned char *pLater = new unsigned char[256 * 256 * 50 * 3];
i.read();
i.close();

Thanks






.



Relevant Pages

  • Re: Window Management
    ... (* prompt is a string resource identifier specifying the string ... PROCEDURE YesNoCancel(prompt: ARRAY OF CHAR; ... VAR INOUT response: ARRAY OF CHAR): BOOLEAN; ...
    (comp.lang.ada)
  • Window Management
    ... (* prompt is a string resource identifier specifying the string ... PROCEDURE YesNoCancel(prompt: ARRAY OF CHAR; ... VAR INOUT response: ARRAY OF CHAR): BOOLEAN; ...
    (comp.lang.ada)
  • Re: Pointer
    ... require in input a pointer char: ... unsafe public static extern int OpenFile; ... What is it pointing to exactly, is it pointing to a "Unicode character" array or is it pointing to a "Single byte character" array or is it pointing to something else? ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Pointer
    ... require in input a pointer char: ... unsafe public static extern int OpenFile; ... What is it pointing to exactly, is it pointing to a "Unicode character" array or is it ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Problem with va_ macros and arrays of arrays
    ... > the arrays passed to a ... > specific char, somewhat similar to what the standard function ... that with an array of struct, or possibly a pointer to a dynamic array ... > As I'm still a beginner in C without a copy of the standard I ...
    (comp.lang.c)

Loading