Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2017, 19:50   #1
Hackerman
Новичок
Джуниор
 
Регистрация: 06.06.2017
Сообщений: 1
По умолчанию Работа с бинарными файлами С++

Здравствуйте, возник один вопрос. Нужно реализовать тип матрицы размера row строк и kol столбцов на основе бинарного файла. Как мне объяснил преподаватель, нужно вводить матрицу в бинарный файл по строкам, то есть несколько раз подряд вводить одномерные массивы в бинарный файл. Массивы динамические. Я немного не понимаю, как это можно реализовать. Все, до чего я дошел этот код ввода:

int * b; b= new int [kol]
for(int j=0; j<row; j++){
for(int i=0; i<kol; i++){
fscanf(f,"%d",&b[i]);
cout <<b[i]<<" ";
}
fwrite(&b,sizeof b,1,fout);}


и вывод:
for (int j=0; j < row; j++){
fread(&a,sizeof a,1,f);
for(int i=0; i<kol; i++) {
cout<<a[i]<<" "; }}

при выводе появляется несколько раз последняя строка, помогите пожалуйста понять, вводятся ли массивы вообще в файл? И если да, то как?
Hackerman вне форума Ответить с цитированием
Старый 06.06.2017, 20:36   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
вводятся ли массивы вообще в файл? И если да, то как?
Выводятся и так, как вам скали пойдет вполне. Но:
1. У вас нет матрицы. У вас одномерный массив, а цикла зачем-то два.
2. sizeof b выведите и посмотрите, чем он равен. Будет сюрприз для вас.
p51x вне форума Ответить с цитированием
Старый 06.06.2017, 21:21   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вот пример двумерного динамического массива 2х5 (будь внимательным при анализе кода):

2.jpg

___________________________________ ___________________________

А что значит, "вводятся ли массивы вообще в файл?"
- Возьми напиши дополнительную функцию для чтения из файла и только после этого вывод на экран - так и узнаешь...
Ну обычно используется функции запись/ чтения парами:

3.jpg

___________________________________ ___________________________

Не знаешь, работаешь ли ты в текстовом формате или в бинарном файле?
- Это зависит от флага, например:

4.png

p.s.: обрати внимание на расширение (жестко заданного) файла в пример выше - ".dat" (а не ".txt").

Да и примеров в интернете - куда не плюнь:

5.png

p.s.1: бери за основу, модифицируй под себя, попутно разбирайся, что означает каждая строчка.
p.s.2: в примере возврат "EXIT_SUCCESS", а ты используй просто 0-ль - мне лень искать другой пример.
___________________________________ ___________________________

Кстате, ты же знаешь, что файл после использования - нужно обязательно программно закрыть?
___________________________________ ___________________________

Только, я прошу тебя не надо сразу писать/читать целый массив в файл - не плоди ошибки. А начни с чего-то простого - одного числа.
Когда получиться - сделаешь уже для статического одномерного массива, равномерностью 6-ть элементов (именно шесть).
а потом переходи в двумерному массиву 3х7.
И только после этого введёшь в свою программу динамическое распределение памяти.

Последний раз редактировалось ura_111; 06.06.2017 в 21:46.
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с бинарными файлами в СИ. Pug_from_Mordor Помощь студентам 3 27.05.2015 20:01
Работа с бинарными файлами SoTwisted Помощь студентам 0 25.04.2011 01:59
С# работа с бинарными файлами bondik Общие вопросы .NET 1 01.10.2010 12:18
работа с бинарными файлами klykovka Помощь студентам 7 28.04.2010 11:07