Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2014, 22:10   #1
MyLifeStyle
Пользователь
 
Регистрация: 29.04.2014
Сообщений: 25
Печаль Мусор в строках

Искал на форуме,проблему решить не смог.

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

Например вёл:
1)
name:Vvvvvv
surname:Vvvvv
code:1111
groupe:1111
2)
name:Vv
surname:Vv
code:11
groupe:11

При чтении из файла выдаёт
1)
name:Vvvvvv
surname:Vvvvv
code:1111
groupe:1111
2)
name:Vvvvvvvvvvvvv
surname:HHHVvvvv
code:115411
groupe:111144
Что то типа такого.
Помогите как решить эту проблему.Возможно что то важное упустил.
Из за этого не могу использовать поиск по имени.Потому что необходимо водить "мусор" чтобы найти запись.

Код :


Код:
#include <iostream>
#include <fstream>   
 
 
using namespace std;
struct Student{
    char Name_Stu [20];
    char Surname_Stu [20];
    char Code_Stu [6];
    char Groupe_Stu[6];
};
void see_Student();
void add_Student();
int main()
 
{ setlocale(LC_ALL, "Russian");
{
add_Student();
see_Student();
}
system ("Pause");
return 0;
 
}
 
void add_Student()
 
{cout<<" Ведите количество студентов: ";
int r;
cin>>r;
Student * Students= new Student[r];
for(int i=0; i<r; i++)
{cout<<"---------Студент под номером----------["<<i+1<<"] "<<endl;
cout<<"\t1.Имя: ";
cin>>Students[i].Name_Stu;
cout<<"\t2.Фамилия: ";
cin>>Students[i].Surname_Stu;
cout<<"\t3.Код: ";
cin>>Students[i].Code_Stu;
cout<<"\t4.Група: ";
cin>>Students[i].Groupe_Stu;
}
ofstream fo("Students.txt", ios::app|ios::binary);
if(!fo)
fo.open("Students.txt", ios::out|ios::binary);
for(int i=0; i<r; i++)
fo.write((char*)&Students[i], sizeof(Student));
cout<<"Инфармация балы записана (Students.txt)\n\n";
fo.close();
}
 
void see_Student()
{
ifstream fi("Students.txt", ios::binary);
if(!fi) cout<<"Error with file\n";
else {fi. seekg(0,ios::end);
int size=fi.tellg();
size=size/sizeof(Student);
Student * Students_1= new Student[size];
fi.seekg(0, ios::beg);
fi.read ((char*)Students_1,sizeof(Student)*size);
for(int i=0; i<size; i++)
cout<<"\n\tИмя студента: "<<Students_1[i].Name_Stu<<"\n\tФамилия студента: "<<Students_1[i].Surname_Stu<<"\n\tКод: "<<Students_1[i].Code_Stu<<"\n\tГрупа: "<<Students_1[i].Groupe_Stu<<"\n";
system("Pause");
}}
MyLifeStyle вне форума Ответить с цитированием
Старый 06.05.2014, 17:57   #2
MyLifeStyle
Пользователь
 
Регистрация: 29.04.2014
Сообщений: 25
По умолчанию

Помогите пожалуйста!
MyLifeStyle вне форума Ответить с цитированием
Старый 07.05.2014, 14:14   #3
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Попробуй обнулить свой новый массив
Код:
memset(Students,0,sizeof(Student)*r);
Не забываем память освобождать:

Код:
delete [] Students;
Код:
delete [] Students_1;
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 07.05.2014 в 14:27. Причина: память освобождать
Krok27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinSock. Мусор в сообщении Pein95 C/C++ Сетевое программирование 3 06.03.2014 01:42
C++ >> fstream >> Мусор -_- Katus Помощь студентам 2 03.05.2012 22:50
Мусор в памяти monro86 Visual C++ 0 10.04.2012 15:04
мусор в UNICODE X-954377 Общие вопросы C/C++ 2 04.07.2010 15:12
мусор в конце строк zmaxon Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 06.12.2009 17:35