Чтение бинарнпых файлов
Я написал следующее:
#include <stdlib.h>
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
FILE *fp,*fp1;
int i,n,N;
double rk1[700000],rk2[700000],A[700000];
char ptr;
main()
{
fp=fopen("rec_001.bin","r+b");
fp1=fopen("w.dat","wt");
n=fread(A,sizeof(A),N,fp);
fclose(fp);
for(i=0;i<N;i++) {
printf("%17.9e %17.9e",rk1,rk2);
fprintf(fp1,"%17.9e %17.9e",rk1,rk2);
}
return (0);
}
Но программа ничего не читает и не записывает! Помогите пожалуйста исправить ошибки.
P.S. Для вставки кода есть кнопочка {...}
Цитата: sadovoya
Тогда для начала прокомментируйте, как она по-вашему должна была работать?
P.S. Для вставки кода есть кнопочка {...}
P.S. Для вставки кода есть кнопочка {...}
В файле, *.bin, который необходимо перевести в текстовый формат содержатся два столбца, записанные с помощью АЦП. Вот мне и нужно прочитать, перевести в текстовый формат. То есть на выходе я должен получить два столбца и записать их в файл.
Задачу я понял сразу. Комментарии к вашему коду, пожалуйста.
Цитата: sadovoya
Задачу я понял сразу. Комментарии к вашему коду, пожалуйста.
n=fread(A,sizeof(A),N,fp);
Мне непонятно как прочитать файл целиком и запомнить количество записей:. иными словами как читать и запоминать первоначальный массив в бинарном коде.
Основываясь на типе данных в файле, если он известен. Если неизвестен, то любые данные -- это нули и единицы двоичные. Читать их можно какими угодно блоками. И есть такая штука, как bitset. Удобно им воспользоваться для перевода двоичных единиц и нулей в символы 1 и 0.
[ code ]
#include <cstdlib>
#include <iostream>
#include <fstream>
/*
http://forum.codenet.ru/q74184/Чтение+бинарнпых+файлов
Имеются файлы, записанные в бинарном формате.
Необходимо составить программу для чтения и перевода данного массива в ASCI код.
*/
/*
проверял в dev-c++ , компилятор Mingw
программа читает и выводит на экран бинарный файл с
именем demo.bin
*/
struct emp
{
int code;
char name[20];
double sallery;
};
using namespace std;
int main(int argc, char *argv[])
{
ifstream inMyFSteam;// файловый поток
struct emp s; // структура которую мы будем считывать
long length,n;// длинна файла и колличество записей
inMyFSteam.open("demo.bin");
if(!inMyFSteam.is_open())
{
cout<<"Open file failedn";
// для проверки что файл открывается
// system("PAUSE"); можно закомментировать
system("PAUSE");
return 0;
}
// длинна файла
inMyFSteam.seekg(0,ios::end);
length=inMyFSteam.tellg();
inMyFSteam.seekg(0,ios::beg);
//считаем колличество записей
n=length/sizeof(emp);
//читаем записи
for(int i=0;i<n;++i)
{
inMyFSteam.read((char*)&s, sizeof(struct emp));
cout<<"code: "<<s.code<<"name: "<<s.name
<<"sal: " <<s.sallery<<endl;
}
//закрыть поток
inMyFSteam.close();
system("PAUSE");
return EXIT_SUCCESS;
}
[ /code ]
Сколько можно напоминать про кнопочку вставки кода {...} ?