Страницы

Поиск по вопросам

среда, 1 января 2020 г.

Как извлечь данные из DBF файла в массив на C

#c #dbf


Возникла необходимость обрабатывать массив чисел, записанных в DBF файле. 

В сети не нашел ответа на самый необходимый вопрос:
Как извлечь из DBF файла содержимое из i-й строки и j-го столбца? 

И попутно: как открыть этот известный файл на чтение на C?
    


Ответы

Ответ 1



Дополню коммент. Под DBF подразумевается один из форматов баз данных, известный нынче как dBase. Он, конечно, немного устарел, но применяется ещё как (особенно в мозгах преподавателей, живущих в прошлом веке). Но общий смысл такой: для того, чтобы "обрабатывать массив чисел, записанных в DBF файле", нужно разобраться в формате хранения данных в этом самом DBF. В принципе ничего сложного. Но если возникает вопрос уровня как открыть этот известный файл на чтение на C? то подсказать мало чего могу. Разве что научиться основам языка C и общепрограммистской грамотности.

Ответ 2



файл открывается функцией int open(const char *pathname, int flags, mode_t mode); А далее, если не использовать специальных библиотек, то следует смотреть формат файла, например здесь и читать его содержимое. Сначала заголовок, что бы узнать структуру, (примерно так struct header { // Database header Information char version; char yy; // Last Update char mm; char dd; long numRecs; unsigned short headerLen; // header Length, Indicates start of data unsigned short recordLen; char zero[16]; char hasMdxMemo; // 0x01 for has mdx, in fox 0x02 for has memo char codePage; char zero2[2]; } header; if(read(fd, &header, sizeof(header)) <= 0){ perror("read"); return 1; } ) а потом данные

Ответ 3



Если Вам действительно нужно обрабатывать файлы формата dBase-III или dBase-IV, то рекомендую обратаить внимание на библиотеку xBase: Xbase (formerly known as xdb, also formerly known as xBase) is a collection of specifiations, programs, utilities and a C++ class library for manipulating Xbase type datafiles and indices. Xbase is useful for accessing data in legacy dBase 3 and 4 database files as well as a general light-weight database engine. It includes support for DBF (dBase version 3 and 4) data files, NDX and NTX indexes, and DBT (dBase version 3 and 4). It supports file and record locking under *nix OS's.

Комментариев нет:

Отправить комментарий