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

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

Войти
Регистрация
Восстановить пароль
 
tube
0 / 0 / 0
Регистрация: 24.09.2008
Сообщений: 26
#1

Записывается мусор в файл - C++

18.06.2009, 11:18. Просмотров 635. Ответов 6
Метки нет (Все метки)

Здравствуйте, есть следующий код для вывода дефолтных значений в файл:

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
#include <iostream>
#include <fstream>
 
using namespace std;
 
struct person {
    int account;
    char lastName[15];
    char firstName[15];
    float balance;
};
 
int main()
{
    ofstream outNameAge("nameage.txt", ios::out);
    if(!outNameAge) {
        cerr << "File cannot be openned\n";
        exit(1);
    }
 
    person blankPerson = {0, "", "", 10.5};
 
    for (int i=1; i<=10;i++) {
        outNameAge.write((char*)&blankPerson, sizeof(blankPerson));
        outNameAge << endl;
    }
 
   return 0;
}
В результате же выводится множество пробелов и в конце что-то вроде D (A в каждой строке.
Подскажите, пожалуйста, в чем здесь загвоздка.
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FunDuck
688 / 379 / 4
Регистрация: 22.01.2009
Сообщений: 1,135
18.06.2009, 11:39     Записывается мусор в файл #2
Ты в файл записываешь структуру. У массива char размер 15, в то время как длина строки 0.
Lord_Voodoo
Супер-модератор
8510 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,854
Завершенные тесты: 1
18.06.2009, 11:44     Записывается мусор в файл #3
ИМХО, так получше работает:
C++
1
2
3
4
5
for (int i=1; i<=10;i++) {
        outNameAge<<blankPerson.account<<" "<<blankPerson.balance
        <<blankPerson.firstName<<" "<<blankPerson.lastName;
        outNameAge << endl;
    }
ваш вариант удивил: первый раз вижу, чтобы так кто-то структуру в файл писал
qazwsx
Сообщений: n/a
18.06.2009, 11:49     Записывается мусор в файл #4
Если ты хочешь смотреть содержимое файла в текстовом редакторе то правильная запись будет :
C++
1
2
3
4
 
for (int i=1; i<=10;i++) {
        outNameAge<<blankPerson.account<<" "<<blankPerson.lastName<<" "<<blankPerson.firstName<<" "<<blankPerson.balance<<endl;
    }
Если в 16-ном редакторе то тебе нужно сначало открыть файл в бинарном режиме :
C++
1
 ofstream outNameAge("nameage.txt", ios::binary);
а уже потом выводить так как ты выводишь
tube
0 / 0 / 0
Регистрация: 24.09.2008
Сообщений: 26
18.06.2009, 11:51  [ТС]     Записывается мусор в файл #5
Цитата Сообщение от VoodooMan Посмотреть сообщение
ИМХО, так получше работает:

Код C++
1
2
3
4
5
6
7
*
* * for (int i=1; i<=10;i++) {
* * * * outNameAge<<blankPerson.account<<" "<<blankPerson.balance
* * * * <<blankPerson.firstName<<" "<<blankPerson.lastName;
* * * * outNameAge << endl;
* * }
*
Да, наверное) Просто изучаю по примерам в учебнике, пытаюсь следовать указаниям)
Lord_Voodoo
Супер-модератор
8510 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,854
Завершенные тесты: 1
18.06.2009, 11:54     Записывается мусор в файл #6
tube, интересно глянуть на те указания, что вас сподвигли на такой код...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2009, 11:55     Записывается мусор в файл
Еще ссылки по теме:

Мусор при записи значений в файл C++
В файл записывается мусор C++
Не всё записывается в файл. Ничего не понимаю C++
C++ Структура не записывается в файл
C++ Результат не записывается в файл

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

Или воспользуйтесь поиском по форуму:
tube
0 / 0 / 0
Регистрация: 24.09.2008
Сообщений: 26
18.06.2009, 11:55  [ТС]     Записывается мусор в файл #7
Всем спасибо, буду пробовать обычным выводом, без write.

Цитата Сообщение от VoodooMan Посмотреть сообщение
tube, интересно глянуть на те указания, что вас сподвигли на такой код...
Я извиняюсь за долгий ответ. Это учебник Дейтелов - Как программировать на С++, глава 14, стр. 754 - 755.
Yandex
Объявления
18.06.2009, 11:55     Записывается мусор в файл
Ответ Создать тему
Опции темы

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