Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.81
Liv-pooL
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 142
#1

Как при помощи ф-ий read/write записать в файл, а потом считать с него - C++

12.03.2012, 23:03. Просмотров 8406. Ответов 26
Метки нет (Все метки)

Такой вопрос!
Как при помощи ф-ий read/write записать в файл, а потом считать с него различные типы данных, как int,double, char, char[5].
Заранее благодарен.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2012, 23:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как при помощи ф-ий read/write записать в файл, а потом считать с него (C++):

Создать файл,потом записать в него данные и вывести их на консоль - C++
Не могу понять что я делаю не так.Программа должна создать файл,потом записать в него данные и потом вывести их на экран,и походу где то я...

Записать в двоичный файл строку, потом считать ее и вывести на экран - C++
Здравствуйте! Помогите советом или реализацией)

Нужно записать массив в файл, а потом из этого файла считать этот же массив - C++
Помогите, пожалуйста, никогда с файлами делов не имела. Нужно записать массив в файл, а потом из этого файла считать этот же массив. ...

Как правильно сохранить и потом считать структуру в бинарный файл - C++
Есть структура struct card { int size; char *lear; int *name; }; Эта структура это карты игрока. Заполняем ее данными, у...

Низкоуровневый ввод-вывод. Как с помощью функции write записать в файл тип int? - C++
Работаю в Ubuntu.По заданию требуется использовать функции низкоуровневого ввода-вывода.Как с помощью функции write(fd,buf,bufsize)...

Как правильно открыть файл и считать из него строку? - C++
Прювет! подскажите пажалста, как правильно открыть и считать строку из файла. весь функционал по обработке уже написал, а тут застрял...

26
-=ЮрА=-
Заблокирован
Автор FAQ
14.03.2012, 15:33 #16
Liv-pooL, я хоть и не рабоатл с io.h однако почти никаких отличий с С++ вариантом не нашёл, по сути функции представляют как бы смесь fwrite и fstream::write
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <io.h>
#include <fcntl.h>
using namespace std;
 
int main()
{
    int f;
    int i_val;
    double d_val;
    char s_val[256] = {0};
    f = open("data.txt",O_WRONLY);
    if(!f)
        cout<<"Error open data.txt\n";
    else
    {
        cout<<"Enter int    : ";cin>>i_val;
        cout<<"Enter double : ";cin>>d_val;
        cout<<"Enter char * : ";cin>>s_val;
        write(f,(void *)&i_val,sizeof(i_val));
        write(f,(void *)&d_val,sizeof(d_val));
        write(f,(void *)&s_val,sizeof(s_val));
        close(f);
        f = open("data.txt",O_RDONLY);
        if(!f)
            cout<<"Error open data.txt\n";
        else
        {
            read(f,(void *)&i_val,sizeof(i_val));
            read(f,(void *)&d_val,sizeof(d_val));
            read(f,(void *)&s_val,sizeof(s_val));
            cout<<"Read int    : "<<i_val<<endl;
            cout<<"Read double : "<<d_val<<endl;
            cout<<"Read char * : "<<s_val<<endl;
            close(f);
        }
    }
    system("pause");
    return 0;
}
0
Миниатюры
Как при помощи ф-ий read/write записать в файл, а потом считать с него  
alkagolik
Заблокирован
14.03.2012, 15:44 #17
Liv-pooL, может стоит попробовать
Bash
1
2
3
4
5
man 2 read
man 2 write
man 2 open
man 2 close
man 2 lseek
-=ЮрА=-, тут речь не об СТЛ Си, тут сисколы юникс.
1
-=ЮрА=-
Заблокирован
Автор FAQ
14.03.2012, 15:48 #18
Цитата Сообщение от alkagolik Посмотреть сообщение
тут сисколы юникс
- с учётом этого Liv-pooL, поясни под какую платформу пишем?
0
alkagolik
Заблокирован
14.03.2012, 15:51 #19
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- с учётом этого Liv-pooL, поясни под какую платформу пишем?
Как при помощи ф-ий read/write записать в файл, а потом считать с него
обрати внимание как записаны инклюды
0
Liv-pooL
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 142
14.03.2012, 16:05  [ТС] #20
-=ЮрА=-,
под Linux изучаем.
0
-=ЮрА=-
14.03.2012, 17:01
  #21

Не по теме:

Цитата Сообщение от Liv-pooL Посмотреть сообщение
-=ЮрА=-, под Linux изучаем.
- я под него не пишу...

0
Liv-pooL
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 142
14.03.2012, 17:46  [ТС] #22
-=ЮрА=-,
Ну мне разобраться хотя бы под Win, а под линукс переделать не сложно.

Добавлено через 47 секунд
Еще раз спасибо за помощь, наконец добил)
0
-=ЮрА=-
Заблокирован
Автор FAQ
14.03.2012, 17:56 #23
Цитата Сообщение от Liv-pooL Посмотреть сообщение
Ну мне разобраться хотя бы под Win
- так я уже тебе и код поцепил который пишет и читает инт дабл и чар(пост16), что ещё не понятно???
0
Liv-pooL
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 142
14.03.2012, 21:26  [ТС] #24
-=ЮрА=-,
Все, Юрий, спасибо, я разобрался и доделал)

Добавлено через 3 часа 25 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <string.h>
#include <iostream>
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <errno.h>
using namespace std;
 
int MENU(void);
 
int main()
{
        int f;
        int i_val,i_val2;
    long int li_val,li_val2;
    short int si_val,si_val2;
    float f_val,f_val2;
        double d_val,d_val2;
        char c_val,c_val2;
        char s_val[256] = {0};
    char s_val2[256] = {0};
 
START:
    cout<<endl<<"MENU"<<endl;
    int vib=MENU();
 
    switch(vib)
    {   
        case 1 :
        {
            int f1=creat("111.txt",S_IWRITE|S_IREAD);
            if (f1<0)
                {perror("Error");goto START;}
            else
                {cout<<"File 111.txt creat\n";goto START;}
        }
 
        case 2 :
        {
                f = open("111.txt",O_WRONLY);
                if(f<0)
                        {perror("Error"); goto START;}
                else
                {
                        cout<<"Enter int       : ";cin>>i_val;
                cout<<"Enter long int  : ";cin>>li_val;
                cout<<"Enter short int : ";cin>>si_val;
                cout<<"Enter float     : ";cin>>f_val;
                        cout<<"Enter double    : ";cin>>d_val;
                cout<<"Enter char      : ";cin>>c_val;
                        cout<<"Enter char *    : ";cin>>s_val;
 
                        write(f,(void *)&i_val,sizeof(i_val));
                write(f,(void *)&li_val,sizeof(li_val));
                        write(f,(void *)&si_val,sizeof(si_val));
                        write(f,(void *)&f_val,sizeof(f_val));
                        write(f,(void *)&d_val,sizeof(d_val));
                write(f,(void *)&c_val,sizeof(c_val));
                        write(f,(void *)&s_val,sizeof(s_val));
 
                        close(f);
            }
                
            f = open("111.txt",O_RDONLY);
                if(f<0)
                            {perror("Error"); goto START;}
                    else
                    {
                            read(f,(void *)&i_val2,sizeof(i_val2));
                read(f,(void *)&li_val2,sizeof(li_val2));
                        read(f,(void *)&si_val2,sizeof(si_val2));
                        read(f,(void *)&f_val2,sizeof(f_val2));
                            read(f,(void *)&d_val2,sizeof(d_val2));
                read(f,(void *)&c_val2,sizeof(c_val2));
                            read(f,(void *)&s_val2,sizeof(s_val2));
 
                            cout<<"\nRead int       : "<<i_val2<<endl;
                cout<<"Read long int  : "<<li_val2<<endl;
                cout<<"Read short int : "<<si_val2<<endl;
                cout<<"Read float     : "<<f_val2<<endl;
                            cout<<"Read double    : "<<d_val2<<endl;
                cout<<"Read char      : "<<c_val2<<endl;
                            cout<<"Read char *    : "<<s_val2<<endl;
                            close(f);
                    }
            goto START;
            }
 
        case 3 :
        {
            remove("111.txt");
            cout<<"Delite file\n";
            goto START;
        }
    }
 
        return 0;
}
 
int MENU(void)
{
    int vib;
    
    cout<<"1 - Creat file"<<endl;
    cout<<"2 - Write and read fail"<<endl;
    cout<<"3 - Delite fail"<<endl;
    cout<<"? - Exit"<<endl<<endl;
    cout<<"Your chouse : "; cin>>vib;
    
    return vib;
}
0
isaak
103 / 40 / 9
Регистрация: 17.10.2010
Сообщений: 670
14.02.2014, 22:07 #25
-=ЮрА=- у меня программный код из 16 поста завершается с ошибкой????? Подскажи пожалуйста в чем может быть причина????? Заранее огромное спасибо!!!!
0
Миниатюры
Как при помощи ф-ий read/write записать в файл, а потом считать с него  
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
14.02.2014, 22:28 #26
Цитата Сообщение от isaak Посмотреть сообщение
-=ЮрА=- у меня программный код из 16 поста завершается с ошибкой
А этот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <fstream>
#include <fcntl.h>
using namespace std;
 
int main()
{
    int f;
    int i_val;
    double d_val;
    char s_val[256] = {0};
    ofstream infile("data.txt",ios::binary|ios::out);
    if(infile==NULL )
        cout<<"Error open data.txt\n";
    else
    {
        cout<<"Enter int    : ";cin>>i_val;
        cout<<"Enter double : ";cin>>d_val;
        cout<<"Enter char * : ";cin>>s_val;
        infile.write((const char*)&i_val,sizeof(i_val));
        infile.write((const char *)&d_val,sizeof(d_val));
        infile.write((const char *)&s_val,sizeof(s_val));
        infile.close();
 
        ifstream infile1("data.txt",ios::binary|ios::in);
        if(infile1==NULL)
            cout<<"Error open data.txt\n";
        else
        {
            infile1.read((char *)&i_val,sizeof(i_val));
            infile1.read((char *)&d_val,sizeof(d_val));
            infile1.read((char *)&s_val,sizeof(s_val));
            cout<<"Read int    : "<<i_val<<endl;
            cout<<"Read double : "<<d_val<<endl;
            cout<<"Read char * : "<<s_val<<endl;
            infile1.close();
        }
    }
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Правда с корректностью проверки
C++
1
 if(infile1==NULL)
далеко не уверен
1
isaak
103 / 40 / 9
Регистрация: 17.10.2010
Сообщений: 670
14.02.2014, 22:36 #27
Спасибо, последний код отработал без ошибок.
0
14.02.2014, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2014, 22:36
Привет! Вот еще темы с ответами:

Как вручную ввести полные имена файлов что бы потом считать/записать информацию с них/на них? - C++
Надо открывать/закрывать файлы в программе для работы с ними. Файлы текстовые (не части проекта). Так вот. Как это сделать в коде я знаю...

Как считать и записать в файл? - C++
Доброго времени суток. Вопрос вот в чем. Реализую md5 алгоритм шифрования и финальным штрихом является считывание из файла незашифрованного...

Как из массива записать объекты в файл, а потом из файла в другой массив ? - C++
Подскажите как с помощью ofstream, ifstream, ios::binary надо записывать объекты в файл и читать их оттуда.

Как правильно считать и записать в файл - C++
Вот такие вот классы, как правильно записать, а затем считать из файла class Base { public: Base(string s=&quot;&quot;):name(s){} virtual...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.