Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106

Мусор в файлах

09.09.2011, 10:23. Показов 3923. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В файлы попадает какой-то мусор, в чём ошибка?

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
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <stdlib.h>
#include <iomanip.h>
#include <conio.h>
 
 struct time_s
{
   int min;
   int sec;
};
 
 struct athlete
{
   char name [20];
   char f_name [20];
   int age;
   time_s time;
};
 
void process(athlete* &all, int count, char *f1_name, char *f2_name);
 
 void main()
{
   athlete *all = NULL;
   char f1_name[20], f2_name[20];
   int count, min;
   count = min = 0;
   clrscr();
   cout << "Введите имя файла F1: ";
   cin >> f1_name;
   cout << "Введите имя файла F2 (бинарный): ";
   cin >> f2_name;
   cout << "Введите количество спортсменов: ";
   cin >> count;
   process(all, count, f1_name, f2_name);
   getch();
}
 
 void process(athlete* &all, int count, char *f1_name, char *f2_name)
{
   int i, n, min = 0;
   all = new athlete[count];
   fstream f1(f1_name, ios::in | ios::out);
   if (f1.fail())
     {
       cout << "F1 Ошибка!" << f1.rdstate() << endl;
     }
   fstream f2(f2_name, ios::in | ios::binary | ios::out);
   if (f2.fail())
     {
       cout << "F2 Ошибка!" << f2.rdstate() << endl;
     }
   cout << "Введите данные о спортсменах\n"
         "(имя, фамилия, возраст, результат в мин. и сек. через пробел):\n";
   for (i = 0; i < count; ++i)
     {
        cout << i + 1 << ". ";
        cin >> all[i].name;
        cin >> all[i].f_name;
        cin >> all[i].age;
        cin >> all[i].time.min;
        cin >> all[i].time.sec;
     }
  
   f1 << "\nПроверка считывания из F2: \n";
   f2.seekg(0,ios::beg);
   for(i=0; i<n; i++)
   f2.write((char *)&all[i], size_d);
   f2.seekp(0, ios::beg);
   for(i=0;i<n;i++)
     {
       f2.read((char *)&all[i], size_d);
       f1 << all[i].name << " ";  
       f1 << all[i].f_name << " ";
       f1 << all[i].age << " ";
       f1 << all[i].time.min << " ";
       f1 << all[i].time.sec << " " << endl;
     }
   for (int k = 0; k < count; k++)
   if (k == 0) min = k;
   else if (all[k].age < all[min].age) min = k;
         cout << "\nСамый юный участник:\n";
         cout << "Порядковый номер в реестре: " << min 
                << "\nИмя: " << all[min - 1].name 
                << "\nФамилия: " << all[min - 1].f_name
                << "\nВозраст: " << all[min - 1].age 
                << "\nРезультат: " << all[min - 1].time.min 
                << " мин. " << all[min - 1].time.sec << " сек. ";
 
   ofstream file("F2.bin", ios::out | ios::binary);
   file.write((char *)&all[min], sizeof(athlete)); 
   f1.close();
   f2.close();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2011, 10:23
Ответы с готовыми решениями:

Есть 2 файла. В файлах числа, найти самое большое число в обоих файлах
С++ Есть два файла В обоих файлах записаны слова Найти самое большое число в обоих файлах

Мусор
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #define n 10 int main() { int a,b,i,q; scanf(&quot;%i&quot;,&amp;q); for(i=0;i&lt;q;i++) ...

Мусор в консоли
Ищу подстроку в строке и забиваю её в массив, в итоге в последнем cout выводится не то, что нужно: вместо &quot;ло в бою, очень ло&quot;...

46
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 11:24  [ТС]
Студворк — интернет-сервис помощи студентам
Прошу прощения, а это что?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 11:27
Цитата Сообщение от Deviaphan Посмотреть сообщение
Не по теме:
Borland C++ for DOS... ну вашу ж мать!
__________________
- Или помогай или переходи в другой топик, какая разница кто на чём пишет - главное результат - работоспособная программа
0
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 11:29  [ТС]
У меня всё равно мусор пишется((
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 11:31
Цитата Сообщение от maxim43k Посмотреть сообщение
Прошу прощения, а это что?
Что именно, твой цикл просто не отрабатывает, потому что программа в него даже не заходит
Вместо n вставь count - число структур атлет
Цитата Сообщение от maxim43k Посмотреть сообщение
f2.write((char *)&all[i], sizeof(athlete));
* *f2.seekp(0, ios::beg);
* *for(i=0;i<n;i++)
* * *{
* * * *f2.read((char *)&all[i], sizeof(athlete));
* * * *f1 << all[i].name << " "; *
* * * *f1 << all[i].f_name << " ";
* * * *f1 << all[i].age << " ";
* * * *f1 << all[i].time.min << " ";
* * * *f1 << all[i].time.sec << " " << endl;
* * *}
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
09.09.2011, 11:31
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Или помогай
Я и помогаю. Намекаю, что не следует пользоваться компиляторами, совершенно не соответствующими стандарту. Очень-очень давно не соответствующими. С такими компиляторами нельзя пользоваться MSDN, т.к. их реализация отличается от стандартной. Имена файлов отличаются от стандартных. Названия функций отличаются от стандартных. По твоему это не помощь? Если ты можешь вернуть слепому зрение, ты это сделаешь или будешь на ощупь рассказывать о цветах радуги?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 11:36
Цитата Сообщение от Deviaphan Посмотреть сообщение
По твоему это не помощь? Если ты можешь вернуть слепому зрение, ты это сделаешь или будешь на ощупь рассказывать о цветах радуги?
- вобщем пишу на пальцах, возми инстал твоей 10-ки или в чём кодишь прийди в реальную школу или институт где в лучшем случае стоит XP а иногда и 98-ая с Борландом, (попробуй установить и запустить её) и садись пиши код...Вобще живёшь в абстранированном мире - вернись на землю много учебных заведений имеют материально учебную базу прошлого тысячилетия, и даже в С 3.1 пишут.

PS:Извиняюсь за офтоп - больше в єтом топике его не будет
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 11:37
maxim43k, вот результат прогона твоего алгоритма
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
 void process(athlete* &all, int count, char *f1_name, char *f2_name)
{
   int i, min = 0;
   all = new athlete[count];
   fstream f1(f1_name, ios::in | ios::out);
   if (f1.fail())
     {
       cout << "F1 Îøèáêà!" << f1.rdstate() << endl;
     }
   fstream f2(f2_name, ios::in | ios::binary | ios::out);
   if (f2.fail())
     {
       cout << "F2 Îøèáêà!" << f2.rdstate() << endl;
     }
   cout << "Ââåäèòå äàííûå î ñïîðòñìåíàõ\n"
         "(èìÿ, ôàìèëèÿ, âîçðàñò, ðåçóëüòàò â ìèí. è ñåê. ÷åðåç ïðîáåë):\n";
   for (i = 0; i < count; ++i)
     {
        cout << i + 1 << ". ";
        cin >> all[i].name;
        cin >> all[i].f_name;
        cin >> all[i].age;
        cin >> all[i].time.min;
        cin >> all[i].time.sec;
     }
  
   f1 << "\nÏðîâåðêà ñ÷èòûâàíèÿ èç F2: \n";
   f2.seekg(0,ios::beg);
   for(i=0; i<count; i++)
   f2.write((char *)&all[i], sizeof(athlete));
   f2.seekp(0, ios::beg);
   for(i=0;i<count;i++)
     {
       f2.read((char *)&all[i], sizeof(athlete));
       f1 << all[i].name << " ";  
       f1 << all[i].f_name << " ";
       f1 << all[i].age << " ";
       f1 << all[i].time.min << " ";
       f1 << all[i].time.sec << " " << endl;
     }
   for (int k = 0; k < count; k++)
   if (k == 0) min = k;
   else if (all[k].age < all[min].age) min = k;
         cout << "\nÑàìûé þíûé ó÷àñòíèê:\n";
         cout << "Ïîðÿäêîâûé íîìåð â ðååñòðå: " << min 
                << "\nÈìÿ: " << all[min - 1].name 
                << "\nÔàìèëèÿ: " << all[min - 1].f_name
                << "\nÂîçðàñò: " << all[min - 1].age 
                << "\nÐåçóëüòàò: " << all[min - 1].time.min 
                << " ìèí. " << all[min - 1].time.sec << " ñåê. ";
 
   ofstream file("F2.bin", ios::out | ios::binary);
   file.write((char *)&all[min], sizeof(athlete)); 
   file.close();
   f2.close();
   f1.close();
}
Миниатюры
Мусор в файлах  
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 11:38
Как видишь всё записалось и считалось - программа вывела что запись 1 минимальная
0
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 11:48  [ТС]
Спасибо огромное!!! Несколько дней пытался отладить программу, код переписывал несколько раз. P.S. есть малюсенькая проблемка, как сделать так, чтобы данные из второго файла на экране были человеческим шрифтом?

0
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 12:10  [ТС]
Из-за чего так происходит? Как этого избежать?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 12:24
Цитата Сообщение от maxim43k Посмотреть сообщение
P.S. есть малюсенькая проблемка, как сделать так, чтобы данные из второго файла на экране были человеческим шрифтом?
- думаю это потому что поток f1 не имеет флага ios::binary попробуй его и в f1_name ввести
PS:Зачем, делал F2.bin делай F2.txt и не мучайся - бинарник с текстом ничем от txt не отличается кроме как обработкой '\r\n'
0
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 12:41  [ТС]
По заданию нужен бинарный файл

Добавлено через 2 минуты
Установка флага не помогла
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 13:30
Цитата Сообщение от maxim43k Посмотреть сообщение
f1 << all[i].name << " "; *
* * * *f1 << all[i].f_name << " ";
* * * *f1 << all[i].age << " ";
* * * *f1 << all[i].time.min << " ";
* * * *f1 << all[i].time.sec << " " << endl;
Замени на такой код (не делай прямой ввод в поток)
C++
1
2
3
4
5
all[i].f_name << " ";
all[i].age << " ";
all[i].time.min << " ";
all[i].time.sec << " " << endl;
f1.write((char *)&all[i], sizeof(athlete));
Проблемма в том что в коносли OEM кодировка а в файле ANSI или UTF
f1.write // будет писать в кодировке файла
1
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
09.09.2011, 13:45  [ТС]
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 13:52
Есть такие библиотечные функции min и max - поетому компилятор ругается на то что у переменной такое же имя, попробуй записать imin или iMin
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 13:56
Впринципе мой борланд (пришлось его отрыть) пропустил без предупреждений даже min
Миниатюры
Мусор в файлах  
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
09.09.2011, 13:58
Он не на это ругается, а что к указателю применяется оператор <<.
f2 в цикле записать забыл ты везде.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 13:59
Стоп я въехал
maxim43k, в том цикле о котором говорил оставь лишь
C++
1
2
3
4
5
for(i=0;i<count;i++)
{
       f2.read((char *)&all[i], sizeof(athlete));
       f1.write((char *)&all[i], sizeof(athlete));
}
- думал там их с клавы вводишь, сори
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
09.09.2011, 13:59
Не то написал. f2 не надо. Пробел по другому добавить надо, не через <<
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.09.2011, 14:00
Deviaphan, да понял я
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
думал там их с клавы вводишь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.09.2011, 14:00
Помогаю со студенческими работами здесь

Мусор и оператор new
Создаю глобальный указатель на структуру, инициализирую некоторые поля после выделения оператором new. Вызываю функцию (callback)...

Мусор в массиве
Задание: Подсчитать количество ненулевых разрядов в двоичной записи заданного натурального числа. Например в числе 13210 = 100001002 - 2...

Мусор в строке
Добрый вечер, есть функция которая принимает строку типа char*, когда я передаю этой функции строку вида &quot;C:/SDL/Maps/1.area&quot;,...

Мусор в массиве
Не могу понять в чем проблема, выводит мусор при компиляции в массивах name, avtor, izdat. Так же крашит при попытке ввода. #include...

Мусор в переменной
Здравствуйте, есть следующий фрагмент кода: void main() { setlocale(LC_ALL,&quot;&quot;); srand(time(NULL)); const int ar = 10; int...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru