Pointer conversion problem

K

Kat

Ok so I finally fixed most of the problems in this program but I've
come up with even more. My program(if you saw earlier) is a program
for secure file deletion as part of a project. I'm using Visual Studio
6.0(my school refuses to upgrade, I don't know why nor can I persuade
them otherwise) Visual C++.

Here's a snippet of the code I'm having problems with.

//Begin Code\\

long size;

infile.seekg(0,ifstream::end);
size = infile.tellg();
infile.seekg(0);
infile.close();

ofstream outfile (fileloc,ofstream::binary);

outfile.write (zero,size);

//End Code\\

Bellow is the error given by the compiler.

//Begin Error\\

Z:\SecureIO.cpp(172) : error C2664: 'write' : cannot convert parameter
1 from 'const int *' to 'const char *'
Types pointed to are unrelated; conversion requires
reinterpret_cast, C-style cast or function-style cast

//End Error\\

How do I fix this problem?
 
P

Peter Jansson

Kat said:
Ok so I finally fixed most of the problems in this program but I've
come up with even more. My program(if you saw earlier) is a program
for secure file deletion as part of a project. I'm using Visual Studio
6.0(my school refuses to upgrade, I don't know why nor can I persuade
them otherwise) Visual C++.

Here's a snippet of the code I'm having problems with.

//Begin Code\\

long size;

infile.seekg(0,ifstream::end);
size = infile.tellg();
infile.seekg(0);
infile.close();

ofstream outfile (fileloc,ofstream::binary);

outfile.write (zero,size);

//End Code\\

Bellow is the error given by the compiler.

//Begin Error\\

Z:\SecureIO.cpp(172) : error C2664: 'write' : cannot convert parameter
1 from 'const int *' to 'const char *'
Types pointed to are unrelated; conversion requires
reinterpret_cast, C-style cast or function-style cast

//End Error\\

How do I fix this problem?

Hi,


How is zero defined? What requirements do you have on "secure file
deletion" - to fill it with \0's or many '0' characters, or perhaps
random bits?

Look at what the compiler tells you, there is the answer to your question.


Regards,

Peter Jansson
http://www.p-jansson.com/
http://www.jansson.net/
 
J

Jim Langston

Kat said:
Ok so I finally fixed most of the problems in this program but I've
come up with even more. My program(if you saw earlier) is a program
for secure file deletion as part of a project. I'm using Visual Studio
6.0(my school refuses to upgrade, I don't know why nor can I persuade
them otherwise) Visual C++.

Here's a snippet of the code I'm having problems with.

//Begin Code\\

long size;

infile.seekg(0,ifstream::end);
size = infile.tellg();
infile.seekg(0);
infile.close();

ofstream outfile (fileloc,ofstream::binary);

outfile.write (zero,size);

How is zero defined? By your error message it would seem it's defined as in
integer pointer. But you want to write a character. Is it an array?
Simplest way would be to make zero a character (array?) of '\0' instead of
an int with value 0. Of course the size of it has to be as big as size
though.

I believe what you actually want to do here is write the character '\0' size
times. You can either create an array and initialize it to '\0'
(std::vector<char> perhaps) or put your write in a for loop writing one char
size times.

char zero = '\0';
for ( int i = 0; i < size; ++i )
outfile.write(&zero, size);

is one way of doing it.

An alternative is to simply cast your zero to a char pointer, as long as you
know that it's the proper size. I wouldn't do this, however, I'd just make
it chars.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top