Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Помогите в работе с файлами (http://forum.oszone.net/showthread.php?t=174289)

John Harlamov 28-04-2010 00:59 1402215

Помогите в работе с файлами
 
Доброго времени суток уважаемые посетители сайта OSzone.

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

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

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

EvgeniyQQQ 28-04-2010 10:03 1402358

John Harlamov, думаю нужно начать с изучения соответствующей документации, а уже здесь задавать более конкретизированные вопросы :)
Так же не помешало бы упомянуть среду разработки в которой вы пишите свою программу.
Существуют различные библиотеки, функции и методы которых позволяют выполнять работу с файлами. Если вы планируете пользоваться стандартной библиотеки то почитайте об потоковом вводе/выводе и работе с файлами: http://www.intuit.ru/department/pl/cpp/17/3.html
Поищите в гугле ответы по вашей теме: C++ работа с файлами

Awejk 28-04-2010 10:07 1402363

если телефонная книга, значит данные нужно хранить в виде структур, вот тебе вариант на 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 1402733

Awejk, буду очень благодарен если приведете пример на С++...

Awejk 28-04-2010 18:06 1402754

нужно всеголишь взять что-нибудь из пресловутой 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;
}

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


Время: 09:41.

Время: 09:41.
© OSzone.net 2001-