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

Почему происходит ошибка "Исключение не обработано"

17.12.2021, 07:42. Показов 881. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему происходит ошибка "Исключение не обработано", при повторной загрузке 1 из меню
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
#include <iostream>
#include <string>
#include <cstring>
#include <fstream>
#include <windows.h>
#pragma warning(disable : 4996)
using namespace std;
void menu() {
    cout << "\n" << "======================================================================" << endl;
    cout << "\n" << "==                           1.Загрузить                            ==" << endl;
    cout << "\n" << "==                           2.Добавить                             ==" << endl;
    cout << "\n" << "==                           3.Поиск                                ==" << endl;
    cout << "\n" << "==                           4.Выйти                                ==" << endl;
    cout << "\n" << "======================================================================" << endl;
}
struct Worker //задаем структуру воркер
{
    char* FullName = new char[1000]; // фио
    char* Position = new char[1000]; //должность
    int year; //год
};
void OutputFromFile(Worker* info, int count) //функция чтобы вывести из файлв
{
    ifstream Reading;
    Reading.open("Workers.txt"); //открываем воркерс
    char Input[1000]; //переменная для считывания строки из файла
    char* WorkerName; //переменная для записи фио в структуру
    char* WorkerPosition; //должности
    char* WorkerYear; //год
    for (int i = 0; i < count; i++) //запускаем цикл для записи в элементы структуры из файла
    {
        Reading.getline(Input, 100000); //считываем из файла строку
        WorkerName = strtok(Input, " "); //переменной передаем значения строки до пробела
        strcpy(info[i].FullName, WorkerName); // копируем элемент структуры
        cout << "ФИО: " << info[i].FullName << endl;
 
        WorkerPosition = strtok(NULL, " "); //переменной  передаем значение этой же строки до пробела начиная со второго слова
        strcpy(info[i].Position, WorkerPosition); //копируем в айный элемент структуры
        cout << "Должность: " << info[i].Position << endl;
 
        WorkerYear = strtok(NULL, " ");//переменной передаем значение этой же строки до пробела начиная с третьего слова
        info[i].year = atoi(WorkerYear); // переделываем из чара в инт(атой) и присваиваем значение года в год эту структуру
        cout << "Год вступления: " << info[i].year << endl;
        cout << endl;
    }
    Reading.close();
    return;
}
 
void ConsoleInput(Worker* info,int p)
{   
    ofstream Writing; //открываем файл для записи в него
    Writing.open("Workers.txt", ios_base::app); //открываем файл воркерс
    for (int i = 0; i < p; i++) //запускаем цикл для записи всех рабочих
    {
        cout << "Введите ФИО( в формате Ф_И_О ) " << i + 1 << " рабочего: ";
        cin >> info[i].FullName;
        cout << "Введите должность : ";
        cin  >> info[i].Position;
        cout << "Введите год поступления : ";
        cin  >> info[i].year;
 
        for (int i = 0; i < p; i++) //цикл которые записывает данные в файл
        {
            Writing << endl << info[i].FullName << " " << info[i].Position << " " << info[i].year;
        }
       Writing.close();
    }
}
void OutputPosition(Worker* info, int count, string office) // функция для поиска по должности
{
    setlocale(LC_ALL, "rus");
    int c = 0; //проверка сущ ли такие рабочие
    for (int i = 0; i < count; i++)
    {
        if (office == info[i].Position)
        {
 
            cout << info[i].FullName << " " << info[i].Position << " " << info[i].year << endl;
            c++;
        }
    }
    if (c == 0) //если мы не нашли не одного рабочего,то к с ничего не прибавляем,значит с так и осталась =0
    {
        cout << "Таких рабочих нет";
    }
}
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int k, p;
    int count = 0; //н для колличества экзампляров структур х-для того чтобы была ветка выбора действий каунт- для подсчета рабочих в файле
    string office;  //строка для проверки на должность
    char Input[1000]; //строка для считывания из файла чтобы посчитать коллич строк
Again: menu();
    cout << "Введите значение(от 1 до 4): ";
    cin >> k;
    if (k == 1)
    {
        ifstream Reading; //открываем файл из которого считываем
        Reading.open("Workers.txt");//открываем воркерс
        if (!Reading.is_open()) //если хотя бы один файл не открылся
        {
            ofstream file{ "Workers.txt" };
            cout << "Файл не найден, но был создан новый! ";
            goto Again;
        }
 
        while (!Reading.eof()) //запускаем цикл пока файл не закончится
        {
            Reading.getline(Input, 1000); //считываем строку
            count++; //прибавляем 1 после считанной строки
        }
        cout << "Файл загружен" << endl;
        cout << "Всего рабочих есть в списке: " << count << endl << endl;//каунт колич строчекв файле
        Worker* worker = new Worker[count];
        OutputFromFile(worker, count);
        goto Again;
    }
    
    if (k == 2) {
        cout << "Сколько рабочих хотите ввести: " << endl;
        cout << "Если хотите закончить вводить данные введите 'S' в графу 'ФИО' " << endl;
        cin >> p;
        Worker* worker = new Worker[p];
        ConsoleInput(worker, p);
        goto Again;
    }
    if (k == 3) {
        Worker* worker = new Worker[count];
        cout << "Все работники: " << endl;
        OutputFromFile(worker, count); //для вывода всех работников,которых мы можем проверить
        cout << "Введите должность для сравнения: ";
        cin >> office;
        cout << "Рабочие прошедшие проверку : " << endl;
        OutputPosition(worker, count, office); //для поиска должностей у рабочих5
        goto Again;
    }
    if (k == 4) {
        cout << "Работа завершена!Удачного дня" << endl;
    }
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.12.2021, 07:42
Ответы с готовыми решениями:

Не работает программа, не могу понять почему, выдает ошибку- исключение не обработано
Не работает программа, не могу понять почему, выдает ошибку- исключение не обработано #include &lt;iostream&gt; #include...

Ошибка: Исключение не обработано
Хочу сделать простой фильтр, но что-то пошло не так... Весь код я прикреплю, может Вы заметите в коде что-то... ...

Исключение не обработано, ошибка System.FormatException
здраствуйте, у мея при откладки кода на вижуал выходит такая ошибка. так как недавно начала писать на vs , можете помочь и выходит...

4
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
17.12.2021, 07:53
Лучший ответ Сообщение было отмечено GBEAT как решение

Решение

Цитата Сообщение от GBEAT Посмотреть сообщение
Почему происходит ошибка "Исключение не обработано", при повторной загрузке 1 из меню
Так а что показал отладчик? В какой строке происходит ошибка? Пояему именно?

Цитата Сообщение от GBEAT Посмотреть сообщение
C++
1
2
3
4
5
        while (!Reading.eof()) //запускаем цикл пока файл не закончится
        {
            Reading.getline(Input, 1000); //считываем строку
            count++; //прибавляем 1 после считанной строки
        }
Это не "цикл пока файл не закончится". Значение count будет неправильным. Из-за этого фактически потом и вылетает ошибка.

При считывании из файла последний элемент читается дважды

Почему значение count наращивается от предыдущего значения при каждом вызове этого цикла? Какой в этом смысл?

Цитата Сообщение от GBEAT Посмотреть сообщение
C++
1
2
3
struct Worker //задаем структуру воркер
{
    char* FullName = new char[1000]; // фио
Почему инициализатор поля прямо в классе использует new? Где вы такое видели?

Цитата Сообщение от GBEAT Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
    for (int i = 0; i < p; i++) //запускаем цикл для записи всех рабочих
    {
        cout << "Введите ФИО( в формате Ф_И_О ) " << i + 1 << " рабочего: ";
        cin >> info[i].FullName;
        cout << "Введите должность : ";
        cin  >> info[i].Position;
        cout << "Введите год поступления : ";
        cin  >> info[i].year;
        for (int i = 0; i < p; i++) //цикл которые записывает данные в файл
        {
            Writing << endl << info[i].FullName << " " << info[i].Position << " " << info[i].year;
        }
Что это за загадочные вложенные циклы? Что они должны делать? Почему они вложены друг в друга?
0
0 / 0 / 0
Регистрация: 17.10.2021
Сообщений: 17
17.12.2021, 08:07  [ТС]
Ошибка вылетает вот тут, на последней строчке этого элемента кода
C++
1
2
3
4
Reading.getline(Input, 100000); //считываем из файла строку
        WorkerName = strtok(Input, " "); //переменной передаем значения строки до пробела
        strcpy(info[i].FullName, WorkerName); // копируем элемент структуры
        cout << "ФИО: " << info[i].FullName << endl;
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
17.12.2021, 08:22
Цитата Сообщение от GBEAT Посмотреть сообщение
Ошибка вылетает вот тут, на последней строчке этого элемента кода
Нет, не на последней. Ошибка вылетает на strcpy(info[i].FullName, WorkerName); потому что WorkerName является нулевым указателем.
0
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
17.12.2021, 08:32
Еще один нюанс:
Цитата Сообщение от GBEAT Посмотреть сообщение
char Input[1000]; //переменная для считывания строки из файла
Размер массива 1000 байт
Цитата Сообщение от GBEAT Посмотреть сообщение
Reading.getline(Input, 100000); //считываем из файла строку
А тут Вы утверждаете, что в нее помещается 100000 байт
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2021, 08:32
Помогаю со студенческими работами здесь

Ошибка при вводе данных *Исключение не обработано*
Здравствуйте при написании кода возникли ошибки с scanf. #include &lt;stdio.h&gt; #include &lt;conio.h&gt; struct book { char...

Из-за чего ошибка у меня System.ArgumentException: "Недопустимый параметр." и пишет то что исключение не обработано?
Код находитя в таймере хочу по таймеру случайно менять фон картинки формы private void timer3_Tick(object sender, EventArgs...

Исключение не обработано System.Reflection.TargetInvocationException: "Адресат вызова создал исключение."
Не получается запустить проект, выдает исключение System.Reflection.TargetInvocationException: &quot;Адресат вызова создал исключение.&quot; ...

Ошибка "Исключение не обработано"
Фрагмент программы. Выдается ошибка &quot;Исключение не обработано&quot;. Подскажите, пожалуйста, что делать? public static int DM2() { ...

Ошибка "Исключение не обработано"
Здравствуйте, делаю авторизацию пользователей с базой MS SQL, там есть пользователи и данные им роли. Но авторизация не получается, выдает...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru