Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
1

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

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

Author24 — интернет-сервис помощи студентам
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;
}
не выводит в файл??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2011, 18:03
Ответы с готовыми решениями:

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

Не выводится информация в файл
Всем доброго времени суток. У меня небольшая просьба,помогите оприделтить наличие ошибок...

Неверно выводится информация через массив
Тащем то вот текст, кусок проги, должен по всей логике выводить на каждой строчке фамилию, имя,...

Определить, куда выводится информация - в файл или на экран?
Write(A,B)

55
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 18:36 41
Author24 — интернет-сервис помощи студентам
Теперь содержимое файла покажите.
0
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
11.06.2014, 18:42 42
Использовал выравнивание, выводит в консоли терь все ровно, но запись такая же в файл.
Вот код:
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
 
#pragma pack(push,1)
struct name{//глобальная структура к которой обращается функция ввода
char regicer[100];
char films[100];
int god;
int dollar;
}; name lenta[40];
#pragma pack(pop)
 
 
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 vivod(void)
{setlocale(LC_ALL,"RUS");
cout<<sizeof(name);
 
 
}
int main()
{
    vvod();
    writes();
    read();
    vivod();
    return(0);
}
0
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
11.06.2014, 18:47 43
Вот содержимое файла.
Миниатюры
Не выводится информация в файл через fstream  
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 18:55 44
Цитата Сообщение от Ринат Посмотреть сообщение
Вот содержимое файла.
Херня это, а не содержимое файла. Или это не тот файл, куда делается запись, или старое содержимое. Закройте его и снова откройте.
0
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
11.06.2014, 19:23 45
Удалил файл, запустил программу, она снова его создала там же. результат тот же) Как мне объяснили в коде все правильно, это файл бинарный из за этого такая фигня кароч я сам не понимаю)
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 19:30 46
Цитата Сообщение от Ринат Посмотреть сообщение
Удалил файл
Я говорил удалять? Надоело по кругу ходить.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.06.2014, 19:36 47
Вот код, ввод, вывод, содержимое файла:
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
 
#pragma pack(push,1)
struct name{//глобальная структура к которой обращается функция ввода
char regicer[100];
char films[100];
int god;
int dollar;
}; name lenta[40];
#pragma pack(pop)
 
 
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();
}
 
void vivod(void)
{setlocale(LC_ALL,"RUS");
cout<<sizeof(name);
 
 
}
int main()
{
    vvod();
    writes();
    read();
    vivod();
    return(0);
}
Дальше сами. От темы отписался.
Миниатюры
Не выводится информация в файл через fstream   Не выводится информация в файл через fstream  
0
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
11.06.2014, 19:48 48
Ок спс.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
11.06.2014, 20:10 49
Цитата Сообщение от Ринат Посмотреть сообщение
Как мне объяснили в коде все правильно, это файл бинарный
А где задан бинарный режим открытия?

C++
1
2
3
ofstream file("FILMS.TXT", std::ios_base::binary);
...
ifstream file("FILMS.TXT", std::ios_base::binary);
?
0
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
11.06.2014, 21:00 50
Ну этого не было заданно в самом коде

Добавлено через 32 секунды
Вообще я не знаю что за тема про бинарные коды, не пользовался.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
11.06.2014, 21:31 51
Цитата Сообщение от Ринат Посмотреть сообщение
Ну этого не было заданно в самом коде
Ну так добавь и проверь. В зависимости от компилятора и ОС оно может быть и не нужно, но лучше поставить.
0
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
12.06.2014, 04:42 52
Щас проверю, только без std
я using namespace std; использую

Добавлено через 36 минут
Нашел ошибку, он записывает все в одну строку и мимолетно игнорирует числа добавляя {} скобки)

Добавлено через 5 минут
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
ofstream file("FILMS.TXT", std::ios_base::binary);
...
ifstream file("FILMS.TXT", std::ios_base::binary)
использовал толку 0, там надо как то перевести все по строкам

Добавлено через 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
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
using namespace std;
 
#pragma pack(push,1)
struct name{//глобальная структура к которой обращается функция ввода
char regicer[100];
char films[100];
int god;
int dollar;
}; name lenta[40];
#pragma pack(pop)
 
 
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");
    file<<"Режжисер  "<<"Фильм  "<<"Год  "<<"Цена  "<<endl;
    for (int i = 0; i < 3; ++i){
        file<<lenta[i].regicer<<"  "<<lenta[i].films<<"  "<<lenta[i].god<<"  "<<lenta[i].dollar<<endl;
    }
 
file.close();
}
 
void read(void)
{
    setlocale(LC_ALL, "RUS");
    ifstream file("FILMS.TXT");
    char line[100];
    while(! file.eof())
    {
        file.getline(line, sizeof(line));
        cout<<line<<endl;
    }
   file.close();
}
 
int main()
{setlocale(LC_ALL,"RUS");
    vvod();
    writes();
    read();
    return(0);
}
Остается только выровнять под название и все чики пуки, ну и еще добавить функцию сортировки для удаления строк не подходящих по цене.

Добавлено через 24 минуты
Да вот еще вопрос как так чтобы Русский язык тоже читало? setlocale везде вроде стоит а при вводе данных на Русском языке выводит белибирду8(
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
12.06.2014, 05:20 53
Цитата Сообщение от Ринат Посмотреть сообщение
Нашел я всетаки выход из данной ситуации, не так это все прописывается вот рабочий и простой код до которогго я только сейчас допер:
Вообще-то это совсем другое решение - файл текстовый и чтения структуры нет.
0
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
12.06.2014, 14:31 54
Всмысле чтения труктуры нет?

Добавлено через 1 минуту
Цитата Сообщение от Ринат Посмотреть сообщение
file<<lenta[i].regicer<<" *"<<lenta[i].films<<" *"<<lenta[i].god<<" *"<<lenta[i].dollar<<endl;
* * }
Вот тут он считывает данные со структуры и записывает их построчно в файл.

Добавлено через 4 минуты
Я в файле проверял все записывает. Так как на чтении так и в файле.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
12.06.2014, 15:09 55
Цитата Сообщение от Ринат Посмотреть сообщение
Всмысле чтения труктуры нет?
В прямом.

Цитата Сообщение от Ринат Посмотреть сообщение
file.getline(line, sizeof(line));
Вот тут читается одна строка а не структура
0
0 / 0 / 3
Регистрация: 29.05.2014
Сообщений: 83
13.06.2014, 03:53 56
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
file.getline(line, sizeof(line));
Вот тут читается одна строка а не структура
Да как бы смысла нету чтения самой структуры надо чтобы считывал с файла, так же и записывал.
0
13.06.2014, 03:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2014, 03:53
Помогаю со студенческими работами здесь

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

Не хочет работать вывод в файл через fstream и <<
Открывается файл, считывает пару строк, освобождаем буфер потока (хотя их вроде бы два при...

При записи в файл и при чтении выводится не вся информация
не работает следующее, когда сохраняешь файл с данными, а потом загружаешь его то выводит не всю...

Не выводится информация
Здравствуйте, пытаюсь сделать CMS. Общий код готов, осталось только доработать детали. Одной из...


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

Или воспользуйтесь поиском по форуму:
56
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru