Составить программу, осуществляющую замену в двоичном файле двумерных массивов - C (СИ)
Формулировка задачи:
Очень срочно, не оставайтесь равнодушными пожалуйста.
Часть кода взято из этой темы.
Комментарием помечено место где появляется ошибка.
Дан двоичный файл, содержащий расположенные по строкам M двумерных
вещественных массивов, каждый размером L X K ( L строк, K строк ).
Каждый элемент массива помещен в отдельную запись.
Составить программу, формирующую этот файл (например, 3 массива
размером 2 на 3).
Составить программу, осуществляющую замену в двоичном файле
двумерных массивов в указанном с клавиатуры интервале номеров на
двумерные массивы, содержащиеся в других, литерных файлах, имена
которых вводятся с клавиатуры по запросу программы.
#include "stdafx.h"
#include <iostream>
#include "locale.h"
#include <string>
int fseek(FILE *stream, long int offset, int origin);
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"RUS");
//Часть 1
//Создаем файл
FILE *text;
text=fopen("laba.bin","wb");
int m,l,k,g,p;
cout<<"Введите количество вещественных двумерных массивов\n";
cin>>m;
cout<<"Введите число строк в массивах\n";
cin>>l;
cout<<"Введите число столбцов в массивах\n";
cin>>k;
float x[10][10][10], z[10][10][10];
//Вводим в файл
for (int i=0;i<m;i++)
{
for (int a=0;a<l;a++)
{
cout<<("Введите элементы для:\n");
cout << a+1<<" Строки " << i+1 <<cout << " массива\n";
for(int b=0;b<k;b++)
{
cin>>x[i][a][b];
fwrite( &x[i][a][b], sizeof(float),1,text);
}
}
}
fclose(text);
system("pause");
//Часть 2
string file;
cout << "Введите номер массива для замены: ";
cin>>m;
cout << ("Введите имя файла, из которого нужно взять данные для замены: ");
cin >> file;
FILE* c;
text=fopen("laba.bin", "rb+");
fseek(text,(m-1)*4*k*l,0);
c=fopen("laba_z.dat ", "r");
for(int i=0;i<(l*k);i++)
{
float f;
fscanf(c, "%f", &f); // В этом месте появляется ошибка
fwrite(&f, sizeof(f), 1, text);
}
fclose(c);
fclose(text);
/*Вывод на экран для проверки*/
text=fopen("laba.bin","rb");
for (int i=0;i<l;i++)
{
for(int j=0;j<k;j++)
{ float s;
fread(&s, sizeof(float), 1, text);
printf("%f ",s);
}
}
fclose(text);
system("PAUSE");
return 0;
}Решение задачи: «Составить программу, осуществляющую замену в двоичном файле двумерных массивов»
textual
Листинг программы
if(!(c=fopen("laba_z.dat ", "r"))
printf (" file open error");
Объяснение кода листинга программы
- Откроется файл
laba_z.datдля чтения или произойдет ошибка открытия файла; - Если файл успешно открыт, то произойдет переход к следующей итерации;
- В противном случае, будет выведено сообщение
file open error.