Показать полную графическую версию : [решено] Помогите в работе с файлами
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+работа+с+файлами)
если телефонная книга, значит данные нужно хранить в виде структур, вот тебе вариант на 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, буду очень благодарен если приведете пример на С++...
нужно всеголишь взять что-нибудь из пресловутой 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.