Другие языки программирования и технологии

Создание базы данных на Turbo C

Я програмирую на языке Turbo C Мне нужно создать базу данных на телефонный справочник. Помогите кто как может!!!
Какая разница, какой там С?
У вас есть 2 варианта - использовать внешнее хранилище данных (нужно будет как-то соединится с SQL-сервером или чем-то подобным) или делать все внутри программы. Учитывая, что Турбо С работает под ДОС, соединение с внешним миром будет представлять определенные трудности :D

Во втором варианте вам нужно самостоятельно реализовать хранилище данных. В этом случае вы можете хранить данные либо в виде текста, либо в виде двоичных структур. При хранении в виде текста будет возможность редактировать файлы руками и объем файлй на диске скорее всего будет меньше. Но прийдется писать парсер для строк. Простейший парсер кстати - это функция fscnaf() Но если вам хочется большей надежности и контроля ошибок - лучше использовать другой вариант.

допустим, что у нас справочник состот из структур вида
struct Abonent
{
char name[64];
char phone[16];
char addr[256];
};

Тогда
struct Abonent ab;

fprintf( fp, "\"%s\"\t\"%s\"\t\"%s\"\n", ab.name, ab.phone, ab.addr );
Запишет в файл запись вида
"имя" "телефон" "адрес"

а если извернуться, то при помощи fscanf можно считать их обратно. Но я бы использовал свой парсер.

Второй вариант - запись и считывание структуры в двоичном виде. Тут пригодятся функции fread/fwrite:
fread( &ab, sizeof(struct Abonent), 1, fp );
fwrite( &ab, sizeof(struct Abonent), 1, fp );

как видно, все гораздо проще, но на диск будет записана вся структура (тоесть куча пустого места) .

Далее надо следать индексы. Индекс - это отсортированное по какому-либо полю последовательность структур примерно такого вида
struct Index
{
char field[255]; // поле, по которому сортируем
unsigned long offset; // Смещение этой структуры в главном файле
};
Хотя впринципе, если извернуться, то можно обойтись и без поля field (за счет сильного увеличения числа обращений к жесткому диску)

Вот примерно так.
PS Может стоит использовать более приличный компилятор? Напрмиер gcc или OpenWatcom ?
ВБ
Валерий Белкин
9 623
Лучший ответ
Если TurboC то скорее всего придеться использовать для хранения текстовый файл.

Ну или ищи библиотеки для подключения к уже имеющимся базам данных типа MySQL и прочее
DS
Denis Smirnov
7 982