Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для KostyaKulakov
64 / 52 / 2
Регистрация: 02.07.2012
Сообщений: 391
Записей в блоге: 2

Мусор при правильном считывание данных из файла

22.02.2013, 21:37. Показов 1311. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <iostream>
#include <fstream>
#include <string>
#include <string.h>
 
class Database
{
public:
    Database(){count = 0;}
 
    void  addRecord(char* name, char* lastname);
    char* getNameById(int id);
    char* getLastNameById(int id);
    int   getCount();
    void  save();
    void  load();
    void  printDatabase();
 
protected:
    int count;
    char* name[100];
    char* lastname[100];
};
 
int Database::getCount()
{
    return count;
}
 
void Database::addRecord(char* name, char* lastname)
{
    this->name[count] = name;
    this->lastname[count] = lastname;
    ++count;
}
 
char* Database::getNameById(int id)
{
    return name[id];
}
 
char* Database::getLastNameById(int id)
{
    return lastname[id];
}
 
void  Database::save()
{
    std::ofstream output;
    output.open("database.txt");
 
    if(!output.is_open())
    {
        std::cerr << "Error open database.txt" << std::endl;
        exit(1);
    }
    int count = getCount();
 
    for(int i=0; i < count; ++i)
        output << getNameById(i) << " " << getLastNameById(i) << std::endl;
 
    output.close();
 
}
 
void  Database::load()
{
    std::ifstream input;
    input.open("database.txt");
 
    if(!input.is_open())
    {
        std::cerr << "Error open database.txt" << std::endl;
        exit(1);
    }
 
    while(!input.eof())
    {
        std::string name;
        input >> name;
        std::string lastname;
        input >> lastname;
 
        char name_[100];
        char lastname_[100];
 
        strcpy(name_,name.c_str());
        strcpy(lastname_,lastname.c_str());
 
        addRecord(name_,lastname_);
    }
 
    input.close();
 
}
 
void Database::printDatabase()
{
    int count = getCount();
 
    for(int i=0; i < count; ++i)
        std::cout << getNameById(i) << " " << getLastNameById(i) << std::endl;
}
 
int main()
{
    Database server;
    
    server.load();
 
    /*
    server.addRecord("Kostya","Kulakov");
    server.addRecord("Lusya","Begunova");
    server.addRecord("Vanya","Frolov");
    server.addRecord("Alex","Sensei");
    */
    server.printDatabase();
 
    //server.save();
 
    return 0;
}
database.txt

C++
1
2
3
4
Kostya Kulakov
Lusya Begunova
Vanya Frolov
Alex Sensei
при считывание из файла, заносится мусор, почему?

ф-ця Database::load()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.02.2013, 21:37
Ответы с готовыми решениями:

Считывание из текстового файла. Считывает мусор без остановки
Считывает мусор из файла без останови.Прекращение считывания при обнаружении конца теста в файле есть. #include&lt;iostream&gt; ...

Мусор при чтении файла
При чтений текста из файла программа вставляет букву я на конце Как убрать?

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

4
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.02.2013, 21:41
Сделайте проверку на eof и выход из while() сразу после первого input >>.
0
 Аватар для KostyaKulakov
64 / 52 / 2
Регистрация: 02.07.2012
Сообщений: 391
Записей в блоге: 2
22.02.2013, 21:45  [ТС]
рабочий вариант, просто изменил char* На string.

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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <iostream>
#include <fstream>
#include <string>
#include <string.h>
 
class Database
{
public:
    Database(){count = 0;}
 
    void  addRecord(std::string name, std::string lastname);
    std::string getNameById(int id);
    std::string getLastNameById(int id);
    int   getCount();
    void  save();
    void  load();
    void  printDatabase();
 
protected:
    int count;
    std::string name[100];
    std::string lastname[100];
};
 
int Database::getCount()
{
    return count;
}
 
void Database::addRecord(std::string name, std::string lastname)
{
    this->name[count] = name;
    this->lastname[count] = lastname;
    ++count;
}
 
std::string Database::getNameById(int id)
{
    return name[id];
}
 
std::string Database::getLastNameById(int id)
{
    return lastname[id];
}
 
void  Database::save()
{
    std::ofstream output;
    output.open("database.txt");
 
    if(!output.is_open())
    {
        std::cerr << "Error open database.txt" << std::endl;
        exit(1);
    }
    int count = getCount();
 
    for(int i=0; i < count; ++i)
        output << getNameById(i) << " " << getLastNameById(i) << std::endl;
 
    output.close();
 
}
 
void  Database::load()
{
    std::ifstream input;
    input.open("database.txt");
 
    if(!input.is_open())
    {
        std::cerr << "Error open database.txt" << std::endl;
        exit(1);
    }
 
    while(!input.eof())
    {
        std::string name;
        input >> name;
        std::string lastname;
        input >> lastname;
 
        addRecord(name,lastname);
    }
 
    input.close();
 
}
 
void Database::printDatabase()
{
    int count = getCount();
 
    for(int i=0; i < count; ++i)
        std::cout << getNameById(i) << " " << getLastNameById(i) << std::endl;
}
 
int main()
{
    Database server;
    
    server.load();
 
    /*
    server.addRecord("Kostya","Kulakov");
    server.addRecord("Lusya","Begunova");
    server.addRecord("Vanya","Frolov");
    server.addRecord("Alex","Sensei");
    */
    server.printDatabase();
 
    //server.save();
 
    return 0;
}
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.02.2013, 22:13
KostyaKulakov, а в чём смысл затеняющих объявлений:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void  Database::save()
{
//////
    int count = getCount();
///////
}
void Database::printDatabase()
{
/////
    int count = getCount();
/////
}
count ведь и так доступен?
1
 Аватар для KostyaKulakov
64 / 52 / 2
Регистрация: 02.07.2012
Сообщений: 391
Записей в блоге: 2
22.02.2013, 22:36  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
KostyaKulakov, а в чём смысл затеняющих объявлений:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void  Database::save()
{
//////
    int count = getCount();
///////
}
void Database::printDatabase()
{
/////
    int count = getCount();
/////
}
count ведь и так доступен?
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
 
class Database
{
public:
    Database(){count = 0;}
 
    void  addRecord(std::string name, std::string lastname);
    std::string getNameById(int id);
    std::string getLastNameById(int id);
    int   getCount();
    void  save();
    void  load();
    void  printDatabase();
 
protected:
    int count;
    std::string name[100];
    std::string lastname[100];
};
 
int Database::getCount()
{
    return count;
}
 
void Database::addRecord(std::string name, std::string lastname)
{
    this->name[count] = name;
    this->lastname[count] = lastname;
    ++count;
}
 
std::string Database::getNameById(int id)
{
    return name[id];
}
 
std::string Database::getLastNameById(int id)
{
    return lastname[id];
}
 
void  Database::save()
{
    std::ofstream output;
    output.open("database.txt");
 
    if(!output.is_open())
    {
        std::cerr << "Error open database.txt" << std::endl;
        exit(1);
    }
 
    output.clear();
 
    for(int i=0; i < count; ++i)
        output << getNameById(i) << " " << getLastNameById(i) << std::endl;
 
    output.close();
 
}
 
void  Database::load()
{
    std::ifstream input;
    input.open("database.txt");
 
    if(!input.is_open())
    {
        std::cerr << "Error open database.txt" << std::endl;
        exit(1);
    }
 
    while(!input.eof())
    {
        std::string name;
        input >> name;
        std::string lastname;
        input >> lastname;
 
        addRecord(name,lastname);
    }
 
    input.close();
 
}
 
void Database::printDatabase()
{
    for(int i=0; i < count; ++i)
        std::cout << getNameById(i) << " " << getLastNameById(i) << std::endl;
}
 
int main()
{
    Database server;
    
    std::cout << "Load database from file? [Y/N]: ";
 
    std::string answer_load;
    std::cin >> answer_load;
 
    if(answer_load == "Y")
        server.load();
 
    std::cout << "Add now Record? [Y/N]: ";
 
    std::string answer_add;
    std::cin >> answer_add;
 
    while(answer_add == "Y")
    {
        std::cout << "Enter Name: ";
 
        std::string name;
        std::cin >> name;
 
        std::cout << "Enter LastName: ";
 
        std::string lastname;
        std::cin >> lastname;
 
        server.addRecord(name,lastname);
 
        std::cout << "Add now Record? [Y/N]: ";
        std::cin >> answer_add;
    }
 
    server.printDatabase();
 
    std::string answer_save;
 
    if(answer_add == "Y")
    {
        std::cout << "Save database from file? [Y/N]: ";
        std::cin >> answer_save;
    }
 
    if(answer_save == "Y" && answer_add == "Y")
        server.save();
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2013, 22:36
Помогаю со студенческими работами здесь

При считывании структуры с файла где-то берёт мусор
Задача, в которой нужно сделать структуру из 4 полей: Собственник Авто, Год выпуска Авто, Марка Авто, Цвет Авто; заполнить массив структур,...

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

Запись и считывание файла - выводится мусор
Запись проходит нормально, но при чтении машина подтягивает мусор из оперативки, в чем проблема? #include &lt;stdio.h&gt; #include...

Считывание с файла данных при автозагрузке
Добрый вечер.Есть программа, которая добавляется в автозагрузки и у нее есть файл config.txt с настройками. Когда первый раз включаешься...

Программа не доходит до процедуры ClrAll при правильном вводе данных. В чём может быть ошибка?
Программа не доходит до процедуры ClrAll при правильном вводе данных. В чём может быть ошибка?uses crt; procedure ClrAll(A: Array of...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru