У меня есть следующий код, и я пытаюсь записать некоторые данные в двоичном файле.
Проблема в том, что у меня нет опыта работы с бинарными файлами, и я не могу понять, что я делаю.
#include <iostream>
#include <fstream>
#include <string>
#define RPF 5
using namespace std;
int write_header(int h_len, ofstream& f)
{
int h;
for(h=0;h<h_len;h++)
{
int num = 0;
f.write((char*)&num,sizeof(char));
}
return 0;
}
int new_file(const char* name)
{
ofstream n_file(name,ofstream::binary);
write_header(RPF,n_file);
n_file.close();
return 0;
}
int main(int argc, char **argv)
{
ofstream file("file.dat",ofstream::binary);
file.seekp(10);
file.write("this is a message",3);
new_file("file1.dat");
cin.get();
return 0;
}
1. Как вы видите, я открываю file.dat и пишу внутри слова "thi". Затем я открываю файл и вижу его значение ASCII. Почему это происходит?
- Затем я создаю новый файл file1.dat и пытаюсь записать в него число 0 пять раз.
Что я должен использовать?
это
f.write((char*)&num,sizeof(char));
или это
f.write((char*)&num,sizeof(int));
и почему я не могу записать значение числа как есть, и мне нужно привести его как char*
?
Это потому что write()
работает так или я могу записать только двоичные символы в двоичный файл?
Может кто-нибудь помочь мне понять, что происходит?