Нужна CMS для интернет-магазина? Здесь лучшая CMS для создания интернет-магазина.
C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Бинарный и текстовый режим создания файлов, Отличие , какиеоператоры использовать?
Людочка
Отправлено: 09.03.2005, 09:23


Не зарегистрирован







1. Сохранение массива X в файл. Имя файла вводится пользователем.
2. Загрузка из файла ранее сохраненных данных в массив X.

Написать две версии программы:
в первой работу с файлом вести в текстовом режиме, во втором работу с файлом вести в бинарном режиме.

ohmy.gif
Konstantine
Отправлено: 09.03.2005, 10:17


Мастер участка

Группа: Модератор
Сообщений: 545



в какой оболочке? судя из вопроса — это скорее всего лабораторные работы (или задачи) и пишуться в DOS-овом С++ без API... уточните, pls...
AVC
Отправлено: 09.03.2005, 10:59


Ветеран

Группа: Модератор
Сообщений: 1583



Если при чтении забыть о выяснении разамера массива и проверках корректности файла, то можно написать, например, так
CODE

#include <stdio.h>
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
int arr[100]; for (int i=0; i < sizeof(arr)/sizeof(arr[0]); i++) arr[i] = i+100;
FILE *fout;

// текстовый формат — сохранить
fout = fopen("C:\\aaa.txt", "wt");
if (!fout) return;
for (int i=0; i < sizeof(arr)/sizeof(arr[0]); i++)
fprintf(fout, "%d\n", arr[i]);
fclose(fout);

// текстовый формат — прочитать
fout = fopen("C:\\aaa.txt", "rt");
if (!fout) return;
for (int i=0; i < sizeof(arr)/sizeof(arr[0]); i++)
fscanf(fout, "%D\n", &arr[i]);
fclose(fout);

{// контроль
AnsiString text;
for (int i=0; i < 10; i++) text += AnsiString(arr[i]) + "\r";
ShowMessage(text);
}



// двоичный формат — сохранить
fout = fopen("C:\\aaa.bin", "wb");
fwrite(arr, 1, sizeof(arr), fout);
fclose(fout);

// двоичный формат — прочитать
fout = fopen("C:\\aaa.bin", "rb");
fread (arr, 1, sizeof(arr), fout);
fclose(fout);

{// контроль
AnsiString text;
for (int i=0; i < 10; i++) text += AnsiString(arr[i]) + "\r";
ShowMessage(text);
}
}

Ввод имени файла — отдельный вопрос и его реализация зависит от оболочки.

Отредактировано AVC — 09/03/2005, 11:17
Bond
Отправлено: 09.03.2005, 10:59


Станционный диспетчер

Группа: Участник
Сообщений: 142



Массив фиксированного размера?
Bond
Отправлено: 09.03.2005, 11:02


Станционный диспетчер

Группа: Участник
Сообщений: 142



Вопрос снимается smile.gif. Если же массив может быть переменного размера, то в начале файла нужно хранить размер массива.
AVC
Отправлено: 09.03.2005, 11:08


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

Если же массив может быть переменного размера, то в начале файла нужно хранить размер массива.

Маленькое уточнение — не нужно, а удобно.

Вернуться в Вопросы программирования в C++Builder