Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 17.02.2013
Сообщений: 3
1

Указатели. Необработанное исключение в "0x77c015de" ": 0x00000000: Операция успешно завершена

17.02.2013, 22:01. Показов 1595. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Очередной вопрос про уже набившие всем оскомину указатели. Задача простая:

Реализовать создание структуры, структурной переменной, указателя на структуру, и их дальнейшее использование в зависимости от варианта задания. Необходимо создать структуру, элементами которой являются фамилия автора книги и ее название. Объявить массив данных типа структуры и ввести значения его элементов. Реализовать функцию добавления данных в массив. Если введена информация об авторе книги и ее названии, которые уже имеются в каталоге, данные не добавлять. Предусмотреть вывод содержимого массива. Предусмотреть меню. Результаты работы программы записать в файл.

Проблема в том, что при вызове функции AddEntry() после 71-й строки отдает ошибку:
"Необработанное исключение в "0x77c015de" ": 0x00000000: Операция успешно завершена."
Погуглив, понял, что это неправильная работа с указателями, прошу помощи в отыскании сути проблемы. Проверки ради пробовал запускать в CodeBlocks и Visual Studio express C++ 2010, ошибка та же.
Вот моя жалкая попытка сделать кусок задачи (на обилие * не обращайте внимание - пытался методом тыка решить проблему разными способами):
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
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
using namespace std;
void MainMenu();
void AddEntry(struct list *,int *count);
void listOutput(int *count);
 
struct list
{
char* bookName;  
char* auName;  
}
listArray[10], *BookPtr;
 
int main()
{
BookPtr = &listArray[0];
//ввод начальных данных
listArray[0].bookName = "Pervaya kniga";
listArray[0].auName = "Pervii avtor";
listArray[1].bookName = "2 kniga";
listArray[1].auName = "2 avtor";
listArray[2].bookName = "3 k";
listArray[2].auName = "3 A";
listArray[3].bookName = "4 Kn";
listArray[3].auName = "4 Av";
listArray[4].bookName = "5 Kniga";
listArray[4].auName = "5 avtor";
 
int choise = 0;
int mmenu = 1;
int i = 5;
int *iPtr;
iPtr=&i;
cout << i<<endl;
while(mmenu>0)
{
    MainMenu();
    cin >> choise;
    switch(choise)
    {
        case 1: AddEntry(BookPtr,iPtr); break;
        case 2: listOutput(iPtr);break;
        default: mmenu = -1; break;
    }
}
return 0;
}
 
void MainMenu()
{
 
    printf("Menu: \n");
    printf("1. Add entry\n");
    printf("2. Array output\n");
    printf("3. Output to file\n");
    printf(".... Any other key for exit\n");
    puts("\n");
    puts("Enter menu number: ");
}
 
void AddEntry(struct list *BookPtr,int *count)
{
 int m = *count+1;
 system("cls");
 puts("ADD ENTRY:");
 puts("Enter Author name: ");
 scanf("%s",*BookPtr[m].auName);
 puts("Enter Book Name:");
 scanf("%s",*BookPtr[m].bookName);
 m++;
 *count=m;
}
 
void listOutput(int *count)
{
    system("cls");
    int k =0;
    puts("List output: ");
    puts("_________________________");
    while(k<*count)
    {
        cout << k+1 << ". " <<"Author: " << listArray[k].bookName << ".  Book Name: " << listArray[k].auName << endl;
        k++;
    }
    puts("_________________________");
    puts("\n \n");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.02.2013, 22:01
Ответы с готовыми решениями:

Ошибка: операция успешно завершена
Вываливается ошибка с таким странным текстом. На каком месте точно сказать не могу, но стек такой:...

System.ComponentModel.Win32Exception: Операция успешно завершена
Доброго времени суток. Программа при открытии очередной формы на Windows XP выдаёт исключение,...

Как подтвердить что операция (STOS) успешно завершена?
Нужно подтвердить что операция успешно завершена! Подскажите как это сделать?? Вот сама...

Необработанное исключение по адресу 0x012D1F29 в lab2__.exe: 0xC00000FD: Stack overflow (параметры: 0x00000000, 0x006020
Написать программу сортировки строки матрицы MM методом пузырька. Исходную и преобразованную...

Необработанное исключение: Запрошенная операция требует повышения
Так для начала, что я хотел сделать, это запустить программу, неважно на какой учетке (с админ...

4
Неэпический
18115 / 10701 / 2063
Регистрация: 27.09.2012
Сообщений: 26,950
Записей в блоге: 1
17.02.2013, 22:08 2
Во-первых, auName - это уже указатель.
Во-вторых, он указывает на константный строковый литерал.
0
0 / 0 / 0
Регистрация: 17.02.2013
Сообщений: 3
17.02.2013, 22:12  [ТС] 3
Спасибо за быстрый ответ. Вроде с во-первых понятно, а вот по поводу "во-вторых" хотелось бы более развернутый ответ, если не затруднит. Заранее спасибо!
0
Неэпический
18115 / 10701 / 2063
Регистрация: 27.09.2012
Сообщений: 26,950
Записей в блоге: 1
17.02.2013, 22:25 4
Цитата Сообщение от fergren Посмотреть сообщение
C++Выделить код
1
listArray[0].auName = "Pervii avtor";
auName после этого указывает на константный строковый литерал. При попытке изменения строкового литерала результат не предсказуем, в Вашем случае программа падает

Добавлено через 7 минут
Немного переделал:
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> 
using namespace std;
void MainMenu();
void AddEntry(struct list *,int *count);
void listOutput(int *count);
 
struct list//Переделаны указатели под массивы
{
char bookName[128];  
char auName[128];  
}
listArray[10], *BookPtr;
 
int main()
{
BookPtr = &listArray[0];
//ввод начальных данных
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!КОПИРОВАНИЕ СТРОК В МАССИВЫ
strcpy(listArray[0].bookName,"Pervaya kniga");
strcpy(listArray[0].auName,"Pervii avtor");
strcpy(listArray[1].bookName,"2 kniga");
strcpy(listArray[1].auName,"2 avtor");
strcpy(listArray[2].bookName, "3 k");
strcpy(listArray[2].auName,"3 A");
strcpy(listArray[3].bookName, "4 Kn");
strcpy(listArray[3].auName,"4 Av");
strcpy(listArray[4].bookName, "5 Kniga");
strcpy(listArray[4].auName,"5 avtor");
 
int choise = 0;
int mmenu = 1;
int i = 5;
int *iPtr;
iPtr=&i;
cout << i<<endl;
while(mmenu>0)
{
    MainMenu();
    cin >> choise;
    switch(choise)
    {
        case 1: AddEntry(BookPtr,iPtr); break;
        case 2: listOutput(iPtr);break;
        default: mmenu = -1; break;
    }
}
return 0;
}
 
void MainMenu()
{
 
    printf("Menu: \n");
    printf("1. Add entry\n");
    printf("2. Array output\n");
    printf("3. Output to file\n");
    printf(".... Any other key for exit\n");
    puts("\n");
    puts("Enter menu number: ");
}
 
void AddEntry(struct list *BookPtr,int *count)
{
 int m = *count+1;
 system("cls");
 puts("ADD ENTRY:");
 puts("Enter Author name: ");
 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!auName и bookName - уже указатели
 scanf("%s",BookPtr[m].auName);
 puts("Enter Book Name:");
 scanf("%s",BookPtr[m].bookName);
 m++;
 *count=m;
}
 
void listOutput(int *count)
{
    system("cls");
    int k =0;
    puts("List output: ");
    puts("_________________________");
    while(k<*count)
    {
        cout << k+1 << ". " <<"Author: " << listArray[k].bookName << ".  Book Name: " << listArray[k].auName << endl;
        k++;
    }
    puts("_________________________");
    puts("\n \n");
}
0
0 / 0 / 0
Регистрация: 17.02.2013
Сообщений: 3
17.02.2013, 22:56  [ТС] 5
Спасибо большое ! Буду тестить и разбираться. You saved my world today!
0
17.02.2013, 22:56
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2013, 22:56
Помогаю со студенческими работами здесь

Необработанное исключение в "0x778e15de" в "dir-3.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000"
#include &lt;windows.h&gt; #include &lt;d3d9.h&gt; LRESULT __stdcall WndProc(HWND hWnd, UINT msg, WPARAM...

"Необработанное исключение в "0x00417c85" в "oui2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000"."
Пишем программу в VS 2010 на С++ DirectX SDK (June 2010). Доходя до одной строчки появляется...

Установка Windows не была успешно завершена
Здравствуйте. Решила поставить Windows 8. Все проходит нормально но, в конце выдает что &quot;Установка...

Необработанное исключение типа "System.IO.IOException" в System.dll Операция ввода/вывода была прервана из-за завершения
Доброе время суток. Имеется 2 прибора, которые хочу одновременно опрашивать по com порту....

Возникло необработанное исключение по адресу 0x73A62CF2: исключение Microsoft C++: std::bad_array_new_length
Доброго времени суток, уважаемые форумчане :) Подскажите начинающему программисту. Ругается на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
Копирование (маппинг) объектов в JavaScript
bytestream 21.01.2025
В современной разработке программного обеспечения копирование объектов представляет собой фундаментальную операцию, которая требует особого внимания и понимания. Маппинг объектов в JavaScript – это. . .
Как работать с Apache Kafka в C# .NET
bytestream 21.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки больших объемов информации в реальном времени. Эта система,. . .
Как использовать RabbitMQ в C# .NET
bytestream 21.01.2025
RabbitMQ представляет собой мощный брокер сообщений, который эффективно решает эту задачу, обеспечивая надежную передачу данных между множеством приложений. Этот инструмент реализует протокол AMQP. . .
Как объединить последние коммиты в Git
bytestream 21.01.2025
В мире разработки программного обеспечения система контроля версий Git стала незаменимым инструментом для управления исходным кодом. Одной из наиболее полезных, но порой сложных для освоения функций. . .
Как запушить новую локальную ветку (branch) в удалённый репозиторий Git и отслеживать её
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемым инструментом для эффективного управления кодом и организации командной работы. Одной из ключевых. . .
Как создать директорию и все родительские директории, указанные в пути, с помощью Python
bytestream 21.01.2025
Python предоставляет мощные инструменты для работы с файловой системой через встроенные модули os и pathlib, которые значительно упрощают процесс манипуляции директориями. Эти модули содержат. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru