PDA

Показать полную графическую версию : [решено] Помогите в работе с файлами


John Harlamov
28-04-2010, 00:59
Доброго времени суток уважаемые посетители сайта OSzone.

Помогите решить задачу с записью/считыванием инфы с файла.

Сделал телефонную книгу....осталось сделать запись/считывание с файла.
вот тут и возникли проблемы...... как и что нужно сделать что бы прога записывала инфу в файл, а при повторном запуске считывала от туда инфу......

за ранее спасибо!)

EvgeniyQQQ
28-04-2010, 10:03
John Harlamov, думаю нужно начать с изучения соответствующей документации, а уже здесь задавать более конкретизированные вопросы :)
Так же не помешало бы упомянуть среду разработки в которой вы пишите свою программу.
Существуют различные библиотеки, функции и методы которых позволяют выполнять работу с файлами. Если вы планируете пользоваться стандартной библиотеки то почитайте об потоковом вводе/выводе и работе с файлами: http://www.intuit.ru/department/pl/cpp/17/3.html
Поищите в гугле ответы по вашей теме: C++ работа с файлами (http://www.google.ru/search?q=C%2B%2B+работа+с+файлами)

Awejk
28-04-2010, 10:07
если телефонная книга, значит данные нужно хранить в виде структур, вот тебе вариант на pure C

#include <sys/stat.h>
#include <memory.h>
#include <fcntl.h>
#include <stdio.h>
#include <io.h>

struct mystruct {
int i;
char buf[5];
double d;
};

int main(int argc, char* argv[])
{
// открываем файл
int fh = _open("file.dat",_O_RDWR | _O_BINARY);
if (fh == -1)
{
// или при необходимости создаём новый
fh = _creat("file.dat",_S_IREAD | _S_IWRITE);
if (fh == -1)
// не шмагла :xz:
return 1;
}

// готовим структуру для записи
mystruct ms;
memset(&ms,0,sizeof ms);
ms.i = 1;
ms.d = 2;

// позиционируемся в конец файла
_lseek(fh,0,SEEK_END);

// добавляем новую структуру
_write(fh,&ms,sizeof ms);

// позиционируемся в начало
_lseek(fh,0,SEEK_END);

// читаем первую записанную структуру
_read(fh,&ms,sizeof ms);

return 0;
}


можно и на С++ наваять, или этого хватит?

John Harlamov
28-04-2010, 17:29
Awejk, буду очень благодарен если приведете пример на С++...

Awejk
28-04-2010, 18:06
нужно всеголишь взять что-нибудь из пресловутой STL.

#include <memory.h>
#include <fstream.h>

using namespace std;

struct mystruct {
long i;
char buf[5];
double d;
};

int main(int argc, char* argv[])
{
fstream f("file.dat",ios::binary|ios::in|ios::out);
mystruct ms;
memset(&ms,0,sizeof ms);
ms.i = 1;
ms.d = 2;
f.seekp(0,ios::end);
f.write((char*)&ms,sizeof(ms));
f.seekp(0,ios::beg);
f.read((char*)&ms,sizeof(ms));
f.close();
return 0;
}


в студии не проверял, могут быть ошибки, но идея примерно такая.




© OSzone.net 2001-2012