|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.06.2017, 19:50 | #1 |
Новичок
Джуниор
Регистрация: 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]<<" "; }} при выводе появляется несколько раз последняя строка, помогите пожалуйста понять, вводятся ли массивы вообще в файл? И если да, то как? |
06.06.2017, 20:36 | #2 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
1. У вас нет матрицы. У вас одномерный массив, а цикла зачем-то два. 2. sizeof b выведите и посмотрите, чем он равен. Будет сюрприз для вас. |
|
06.06.2017, 21:21 | #3 |
Участник клуба
Регистрация: 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. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с бинарными файлами в СИ. | 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 |