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

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

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

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

18.06.2009, 11:18. Просмотров 667. Ответов 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 в каждой строке.
Подскажите, пожалуйста, в чем здесь загвоздка.
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2009, 11:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Записывается мусор в файл (C++):

В файл записывается мусор - C++
Добрый вечер! Почему при записи в бинарный файл, в файл записывается мусор и соответственно читается из него тоже мусор? #define...

В файл записывается мусор. Подкорректировать код - C++
Нужна помощь! В общем организована БД со структурами и целый перечень функций, которые её обслуживают. Всё работало, но что как-то...

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

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

Информация не записывается в файл - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; char Otvet; string Text;...

Не записывается строка в файл - C++
Не записывается строка в файл в чем может быть причина ? fstream f(&quot;work_mem.txt&quot;, ios::in | ios::out);// ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
FunDuck
688 / 379 / 4
Регистрация: 22.01.2009
Сообщений: 1,135
18.06.2009, 11:39 #2
Ты в файл записываешь структуру. У массива char размер 15, в то время как длина строки 0.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,883
Завершенные тесты: 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
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,883
Завершенные тесты: 1
18.06.2009, 11:54 #6
tube, интересно глянуть на те указания, что вас сподвигли на такой код...
tube
0 / 0 / 0
Регистрация: 24.09.2008
Сообщений: 26
18.06.2009, 11:55  [ТС] #7
Всем спасибо, буду пробовать обычным выводом, без write.

Цитата Сообщение от VoodooMan Посмотреть сообщение
tube, интересно глянуть на те указания, что вас сподвигли на такой код...
Я извиняюсь за долгий ответ. Это учебник Дейтелов - Как программировать на С++, глава 14, стр. 754 - 755.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2009, 11:55
Привет! Вот еще темы с ответами:

Результат не записывается в файл - C++
Здравствуйте. Столкнулся с такой проблемой: после выполнения цикла (условия), результат не записывается в файл. int main() { ...

Не записывается бинарный файл:( - C++
Здравствуйте. Программа читает четыре числа типа double в текстовом файле и записывает их в бинарный файл в той же последовательности....

Результат не записывается в файл - C++
#include &quot;studide.h&quot; int main() { ofstream fout(&quot;cpp.txt&quot;); setlocale(LC_CTYPE, &quot;rus&quot;); cout &lt;&lt; &quot;Введите цифру:\n&quot;; string...

Неправильно записывается символ в файл - C++
ПОМОГИТЕ КТО ЧЕМ МОЖЕТ!!! Зашифровал значит текст.Дальше его расшифровую.Расшифровал Получил ASCII код символа.Пишу что-то типа: int...


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

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

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