Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
#1

Не выводится информация в файл через fstream - C++

04.02.2011, 18:03. Просмотров 1836. Ответов 55
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
#include <iostream>
 
using namespace std;
 
int main()
{
   fstream fio( "input.txt" );
   int a;
   fio >> a;
   fio.open( "output.txt" );
   fio << a << endl;
   
   return 0;
}
не выводит в файл??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2011, 18:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не выводится информация в файл через fstream (C++):

Информация не сохраняется файл через fstream - C++
Если создать объект типа fstream, то в файл почему-то ничего не записывается (в отличие от ofstream) fstream...

Файл создается, но в него не записываеться информация, и не выводится в консоль - C++
#include &lt;vcl.h&gt; #pragma hdrstop #include&lt;stdlib.h&gt; #include&lt;iostream.h&gt; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #pragma argsused ...

Не выводится информация из файла - C++
не выводится информация с файла! #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; struct test { std::string...

Функция cin.get - информация не выводится - C++
При вводе числа данная программа работает нормально, однако если ввести, например, букву по идее должно появляться сообщение &quot;Ошибка! Это...

Ввод и вывод через fstream - C++
Непонятно почему не выводит в файл. Например в файле 123 &quot;аааббб&quot; а в файл 321 пустота, но если использовать разные имена потоков все ок. ...

Fstream не видит файл - C++
Делаю лабу и возникла такая проблема - надо открыть текстовый файл. Файл лежит в одной папке c .exe . Но программа упорно не видит файл. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 02:50 #16
C++
1
2
3
4
5
6
7
8
9
10
11
for(i=1; i<=5;i++)
    {
    cout<<"ВВедите режисера: ";
    cin>>lenta[i].regicer;
    cout<<"Введите название фильма: ";
    cin>>lenta[i].films;
    cout<<"Введите год выпуска фильма: ";
    cin>>lenta[i].god;
    cout<<"Введите стоимость: ";
    cin>>lenta[i].dollar;
    }
Первый индекс массива 0, а не 1.

Добавлено через 1 минуту
Цитата Сообщение от Ринат Посмотреть сообщение
file.write((char *),sizeof(name));
Я же писал, что взятие адреса нужно убрать (&), а не имя массива.
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
11.06.2014, 02:56 #17
Убрал но заработало так же как и работало. те ввожу данные а они не записываются и не читается соответственно,
вот код:
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
 
 
 
 
struct name{//глобальная структура к которой обращается функция ввода
char regicer[100];
char films[100];
int god;
int dollar;
};name lenta[40];
 
 
 
int vvod(void)//Функция ввода по сути которая должна возвращать переменные в структуру.
 
{setlocale(LC_ALL, "RUS");
    int i;
    for(i=0; i<=5;i++){
    cout<<"ВВедите режисера: ";
    cin>>lenta[i].regicer;
    cout<<"Введите название фильма: ";
    cin>>lenta[i].films;
    cout<<"Введите год выпуска фильма: ";
    cin>>lenta[i].god;
    cout<<"Введите стоимость: ";
    cin>>lenta[i].dollar;
}
}
int writes(void)
{setlocale(LC_ALL, "RUS");
ofstream file("FILMS.TXT");
file.write((char *) lenta, sizeof(name));
file.close();
 
 
}
int read(void){setlocale(LC_ALL, "RUS");
ifstream file("FILMS.TXT");
char line[100];
while(!file.eof()){
 
file.getline(line, sizeof(line));
cout<<line<<endl;
 
}
 
}
 
int main(){
vvod();
writes();
read();
return(0);
 
 
}
Добавлено через 2 минуты
А нет извеняюсь, в файл записало 123 но только это.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 03:02 #18
Цитата Сообщение от Ринат Посмотреть сообщение
в файл записало 123 но только это.
Вводили что, как, сколько? Скрин ввода покажите.
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
11.06.2014, 03:05 #19
Сек
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 03:10 #20
Записывает нормально. Сделайте запись одной структуры (i = 0) для проверки, потом увеличите. А вот чтение не исправили, оставили текстовый метод. Это, по-моему, я вам писал, что не нужно делать у функций возвращаемые значения, если они ничего не возвращают?
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
11.06.2014, 03:12 #21
[]https://vk.com/albums180239427?z=photo180239427_332092947%2Fphotos180239427[/] <--- начало
[]https://vk.com/albums180239427?z=photo180239427_332092948%2Fphotos180239427[/]<--- пред конец
[]https://vk.com/albums180239427?z=photo180239427_332092950%2Fphotos180239427[/]<-- конец

Добавлено через 43 секунды
Блин как тут вылодить нормально фотку.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 03:16 #22
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void read(void)
{
    setlocale(LC_ALL, "RUS");
    ifstream file("FILMS.TXT");
    name temp;
    while(file.read((char*)&temp, sizeof(name)))
    {
        cout << temp.regicer << endl;
        cout << temp.films << endl;
        cout << temp.god << endl;
        cout << temp.dollar << endl;
   }
}
Добавлено через 51 секунду
Цитата Сообщение от Ринат Посмотреть сообщение
Блин как тут вылодить нормально фотку.
Не нужно уже. А вообще, расширенный режим (внизу кнопка), управление вложениями, загрузить и т.д.
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
11.06.2014, 03:19 #23
Цитата Сообщение от alsav22 Посмотреть сообщение
void read(void)
{
* * setlocale(LC_ALL, "RUS");
* * ifstream file("FILMS.TXT");
* * name temp;
* * while(file.read((char*)&temp, sizeof(name)))
* * {
* * * * cout << temp.regicer << endl;
* * * * cout << temp.films << endl;
* * * * cout << temp.god << endl;
* * * * cout << temp.dollar << endl;
* *}
}
Тут приводится функция чтения элементов труктуры я правельно понял? и таким же методом можно сделать ввод в файл?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 03:22 #24
Вот так, приблизительно, если три записи (структуры) делать:
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
 
struct name{//глобальная структура к которой обращается функция ввода
char regicer[100];
char films[100];
int god;
int dollar;
}; name lenta[40];
 
 
 
void vvod(void)//Функция ввода по сути которая должна возвращать переменные в структуру.
{
    setlocale(LC_ALL, "RUS");
    int i;
    for(i = 0; i < 3; i++)
    {
        cout<<"ВВедите режисера: ";
        cin>>lenta[i].regicer;
        cout<<"Введите название фильма: ";
        cin>>lenta[i].films;
        cout<<"Введите год выпуска фильма: ";
        cin>>lenta[i].god;
        cout<<"Введите стоимость: ";
        cin>>lenta[i].dollar;
    }
}
 
void writes(void)
{
    setlocale(LC_ALL, "RUS");
    ofstream file("FILMS.TXT");
    for (int i = 0; i < 3; ++i)
        file.write((char *) &lenta[i], sizeof(name));
    file.close();
}
 
void read(void)
{
    setlocale(LC_ALL, "RUS");
    ifstream file("FILMS.TXT");
    name temp;
    while(file.read((char*)&temp, sizeof(name)))
    {
        cout << temp.regicer << endl;
        cout << temp.films << endl;
        cout << temp.god << endl;
        cout << temp.dollar << endl;
   }
   file.close();
}
 
int main()
{
    vvod();
    writes();
    read();
    
    return(0);
}
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
11.06.2014, 03:22 #25
C++
1
file<<"Режжисер  "<<"Фильм  "<<"Год  "<<"Цена  "<<endl;
я ввел для понятия что он выводит.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 03:24 #26
Цитата Сообщение от Ринат Посмотреть сообщение
я ввел для понятия что он выводит.
Файл не для того, чтобы его в блокноте разглядывать (тем более записанный в бинарном режиме). При выводе на экран нужно добавлять к данным из файла.
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
11.06.2014, 03:45 #27
Так по данному примеру, данные выводит, но сама запись так же осталась на том же уровне записало только начало. Да и самый интересный момент то что запись идет как бы через endl те как я вводил по строкам так и вывел, а по идее должен разбить на столбцы как я изначально выводил
Цитата Сообщение от Ринат Посмотреть сообщение
file<<"Режжисер *"<<"Фильм *"<<"Год *"<<"Цена *"<<endl;
Добавлено через 9 минут
Все понял в чем фишка вывода на экран, просто надо без endl в функции чтения и вывода cout.

Добавлено через 7 минут
Вот как получается:
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
 
struct name{//глобальная структура к которой обращается функция ввода
char regicer[100];
char films[100];
int god;
int dollar;
}; name lenta[40];
 
 
 
void vvod(void)//Функция ввода по сути которая должна возвращать переменные в структуру.
{
    setlocale(LC_ALL, "RUS");
    int i;
    for(i = 0; i < 3; i++)
    {
        cout<<"ВВедите режисера: ";
        cin>>lenta[i].regicer;
        cout<<"Введите название фильма: ";
        cin>>lenta[i].films;
        cout<<"Введите год выпуска фильма: ";
        cin>>lenta[i].god;
        cout<<"Введите стоимость: ";
        cin>>lenta[i].dollar;
    }
}
 
void writes(void)
{
    setlocale(LC_ALL, "RUS");
    ofstream file("FILMS.TXT");
    for (int i = 0; i < 3; ++i)
        file.write((char *) &lenta[i], sizeof(name));
    file.close();
}
 
void read(void)
{
    setlocale(LC_ALL, "RUS");
    ifstream file("FILMS.TXT");
    name temp;
    while(file.read((char*)&temp, sizeof(name)))
    {
        cout << temp.regicer<<"  "<<temp.films<<"  "<<temp.god<<"  "<<temp.dollar<<endl;
 
   }
   file.close();
}
 
int main()
{
    vvod();
    writes();
    read();
 
    return(0);
}
Добавлено через 39 секунд
Вот только запись в файл не так8(.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 15:36 #28
Цитата Сообщение от Ринат Посмотреть сообщение
Вот только запись в файл не так8
Правильность записи проверяется правильностью вывода. Если вывод такой как нужно, то и запись значит правильная.
Цитата Сообщение от alsav22 Посмотреть сообщение
Файл не для того, чтобы его в блокноте разглядывать (тем более, записанный в бинарном режиме).
Ринат
0 / 0 / 0
Регистрация: 29.05.2014
Сообщений: 81
11.06.2014, 17:59 #29
Я заметил ошибку для цикла думал поможет но не помогло, в функции write
Цитата Сообщение от Ринат Посмотреть сообщение
for (int i = 0; i < 3; ++i)
* * * * file.write((char *) &lenta[i], sizeof(name));
* * file.close();
нету {}
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 18:03 #30
Цитата Сообщение от Ринат Посмотреть сообщение
нету {}
Всё там правильно. Проблема в чём? Понятно объясните.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2014, 18:03
Привет! Вот еще темы с ответами:

Запись в файл fstream - C++
После первого прогона не выводит ничего из файла. void WriteInTheFile(fstream &amp;file_in) { file_in.seekg(0,file_in.end); char str;...

Запись в файл fstream - C++
Вот такой вот код , изобразил я для записи переменной в файл , проблема в том , что компилятор записывает в него не 10 раз L , а ...

Fstream не видит файл - C++
Почему в Visual Studio2015 не находит текстовый файл, который лежит рядом с .exe? ifstream F; F.open(&quot;vacancy.txt&quot;); char...

Запись/чтение структуры через fstream - C++
Доброго времени суток! у меня есть несколько вопросов по поводу файловых потоков. 1. Как можно записать/прочитать массив структур в...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.06.2014, 18:03
Ответ Создать тему
Опции темы

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