1 Востаннє редагувалося Дмитро-Чебурашка (04.06.2015 17:43:20)

Тема: Читання та запис структур

Доброго дня!   

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

#include <iostream> 

void show_string(char *string) 

{ 
   while (*string) std::cout << *string++; 
} 



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

int main(int argc, char* argv[])
{
   
    char str1[]="Sample string";

   // відкриваємо файл
    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;
    mystruct B;
    memset(&ms,0,sizeof ms);
    memset(&B,0,sizeof B);
    ms.i = 43690;
    ms.d = 234881023;
    strcpy(ms.buf, "Бука");

    // позиціонуймо покажчик в кінець файлу
    _lseek(fh,0,SEEK_END);
    
    char* pstr1 = 0;  pstr1+=1245008;
    show_string(pstr1);


    // додаємо нову структуру
    _write(fh,&ms,sizeof ms);

    // позиціонуймося у початок
    _lseek(fh,0,SEEK_END);        // long _ lseek ( int fd, long offset, int origin ); Переміщує покажчик файлу у вказане місце розташування.

    // читаємо першу записану структуру
    _read(fh,&B,sizeof B);
    
    
    printf("{ i: %d, d: %d, buf: %c }", B.i, B.d, B.buf);
    
    
    getch(); 
    return 0;
}

Я звичайно розраховував що file.dat буде прочитаний і присвоєний B а що це?

У  B нулі......    Взагалі що в мене таки B?  Я гадав що дещо таке саме як обЄкт.
А може й ні...

Post's attachments

Копия Zapis_Stru.exe.txt 36 kb, 334 downloads since 2015-06-04 

2

Re: Читання та запис структур

// позиціонуймося у початок
    _lseek(fh,0,SEEK_END);

початок
SEEK_END

Ще наблизити?

А взагалі тут у вас суржик C та C++. Краще уникати такого.

Подякували: Дмитро-Чебурашка1

Re: Читання та запис структур

ООО!!!!   SEEK_END це мабудь кінець?!!    Дякую!!!!!!


Краще уникати такого.

Так, зрозуміло.

Re: Читання та запис структур

Спасибі величезне, я дві години розмірковував!! .... Тепер :_ lseek (fh, 0, SEEK _ SET);

Щось не те! i: 1, d: 0, buf:

Але це ж не те!

5 Востаннє редагувалося koala (04.06.2015 22:27:34)

Re: Читання та запис структур

Придивився до заголовків - це ж пісня просто... Зветься "відгадайте мову і ОС за інклюдами".

Дмитро-Чебурашка написав:

#include <sys/stat.h> //C, *NIX
#include <memory.h> //C, навіть страшно припустити ОС... Хай буде це.
#include <fcntl.h> //C, *NIX
#include <stdio.h> //ANSI C/C++ (до C++98)
#include <io.h> //хз, може, померлий з виходом XP Windows POSIX compatibility layer
#include <string.h> //ANSI C/C++ (до C++98)
#include <conio.h> //C, DOS

#include <iostream> //C++98

Подякували: Дмитро-Чебурашка1