Составить программу, осуществляющую замену в двоичном файле двумерных массивов - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д