Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
#1

Ошибка обращения к нулевому адресу - C++

22.07.2010, 22:19. Просмотров 1699. Ответов 21
Метки нет (Все метки)

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
int main(int argc, char* argv[])
{
    ifstream f ("alphacntr",ios::in|ios::binary);
    
 
    if (!f)
    {
        cout<<"File opening error!\n";
        return 1;
    }
 
    int mas [25], i;
    char ch;
 
    for (i = 0; i < 26; i++)
        mas [i] = 0;
 
    while (!f.eof())
    {
        ch = f.get();
 
        if (isalpha(ch))
        {
            if (!islower(ch))
                toupper(ch);
 
            mas [ch - 'A']++;
        }
    }
 
    for (i = 0; i < 26; i++)
    {
        cout<<(char)mas[i + 'A']<<' ';
    }
 
    cout<<endl;
 
    for (i = 0; i < 26; i++)
    {
        cout<<mas[i];
    }
 
    cout<<endl;
 
    return 0;
}
while (!f.eof()) - на этой строчке выдаёт "Unhandled exception in ....exe: 0x0000005: Access Violation."
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2010, 22:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка обращения к нулевому адресу (C++):

Почему код корректро отрабатывает после обращения по разыменованному нулевому указателю? - C++
Добрый вечер, проходил тест по плюсам и столкнулся со следующим кодом. Объясните, пожалуйста, почему всё работает? По идее же происходит...

Ошибка обращения к элементу массива - C++
void sort(int *mas, int len) { int max = mas; int min = mas; for (int i = 1; i&lt;len; ++i) { if (max &lt; mas) max = mas;...

Ошибка в уровнях косвенного обращения - C++
Доброе всем время суток! Пишу программку, все делю по частям и проверяю. возникла ошибка, а именно : t: &quot;double&quot; отличается по уровням...

Конвертор из wchar_t to string. Ошибка косвенного обращения. - C++
Вот код, Ошибки: Ошибка 3 error C2040: temp: &quot;std::string&quot; отличается по уровням косвенного обращения от &quot;wchar_t...

Ошибка обращения к строке (нарушение прав доступа чтения) - C++
Добрый всем день немогу разобраться что за ошибка и как ее локализовать код и скрин прикреплены

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу - C++
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость билета, количество мест). Выбор по дате...

21
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
22.07.2010, 22:35 #2
alexsvk, что за IDE? попробуйте написать явно
C++
1
if(f != NULL)
0
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
22.07.2010, 22:38  [ТС] #3
Цитата Сообщение от M128K145 Посмотреть сообщение
alexsvk, что за IDE? попробуйте написать явно
C++
1
if(f != NULL)
Хм, программа показала ошибку открытия файла.
0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
22.07.2010, 22:47 #4
alexsvk, значит файл недоступен(имя написано с ошибками, находится не в этом каталоге)
0
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
22.07.2010, 22:54  [ТС] #5
Цитата Сообщение от M128K145 Посмотреть сообщение
alexsvk, значит файл недоступен(имя написано с ошибками, находится не в этом каталоге)
я просто скопировал это имя и создал файл в папке этой программы
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,848
22.07.2010, 23:27 #6
Цитата Сообщение от alexsvk Посмотреть сообщение
int mas [25]
Цитата Сообщение от alexsvk Посмотреть сообщение
for (i = 0; i < 26; i++)
ничего странного не замечаете?
0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
22.07.2010, 23:55 #7
easybudda, это будет потом, когда хоть поток создастся
Хотя я немного ошибся и надо написать так
C++
1
if(f == NULL)
Такой себе тест для ТС на понимание действий, с которым он не справился
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,848
23.07.2010, 00:06 #8
поправил строку
C++
1
int mas [26], i;
и к имени файла .txt добавил (ну и файл соответственно создал - alphacntr.txt). Скомпилировалось и запустилось. Ошибок не выдало никаких, правда, вывело бред какой-то.
А ругалось так, как ругалось потому, что в момент, когда ошибка выдавалась, указатель на следующей команде стоял...
Ошибка обращения к нулевому адресу

Цитата Сообщение от M128K145 Посмотреть сообщение
if(f == NULL)
а чем это в принципе от
C++
1
if ( ! f )
отличается?
0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
23.07.2010, 00:32 #9
easybudda, не знаю, может IDE какая-то экзотическая, которая не может нормальным образом обработать. Факт в том, что ошибка пропала, но не факт, что после этого изменения
0
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
23.07.2010, 12:16  [ТС] #10
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
int main(int argc, char* argv[])
{
    ifstream f ("alphacntr.txt",ios::in|ios::binary);
    
 
    if (f != NULL)
    {
        cout<<"File opening error!\n";
        return 1;
    }
 
    int mas [25], i;
    char ch;
 
    for (i = 0; i < 25; i++)
        mas [i] = 0;
 
    while (!f.eof())
    {
        ch = f.get();
 
        if (!f.good() && f.eof()) return 1;
 
        if (isalpha(ch))
        {
            if (!islower(ch))
                toupper(ch);
 
            mas [ch - 'A']++;
        }
    }
 
    for (i = 0; i < 25; i++)
    {
        cout<<(char)mas[i + 'A']<<' ';
    }
 
    cout<<endl;
 
    for (i = 0; i < 25; i++)
    {
        cout<<mas[i];
    }
 
    cout<<endl;
 
    f.close();
 
    if (!f.good()) return 1;
 
    return 0;
}
Вот исправленный код.
easybudda, создал файл alphacntr.txt, и файл соответствующий, конечно. При запуске выдаёт ошибку открытия файла, то есть f = NULL.
0
neske
1503 / 870 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
23.07.2010, 12:25 #11
Где вы создали файл?
0
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
23.07.2010, 12:33  [ТС] #12
Цитата Сообщение от neske Посмотреть сообщение
Где вы создали файл?
C:\Program Files\Microsoft Visual Studio\MyProjects\Ch9_finish_4
0
neske
1503 / 870 / 84
Регистрация: 26.03.2010
Сообщений: 2,985
23.07.2010, 12:43 #13
Дак это, шестая строка:

C++
1
 if (f==NULL) {}
0
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
23.07.2010, 12:44  [ТС] #14
Цитата Сообщение от neske Посмотреть сообщение
Дак это, шестая строка:

C++
1
 if (f==NULL) {}
Вы посмотрите предыдущие посты и мой последний ответ перед Вашим первым постом.
0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
23.07.2010, 13:02 #15
alexsvk, перечитайте внимательно пост Ошибка обращения к нулевому адресу
0
23.07.2010, 13:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2010, 13:02
Привет! Вот еще темы с ответами:

Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу - C++
Помогите, пожалуйста, исправит ошибку. Необработанное исключение по адресу 0x77D88E19 (ntdll.dll) в Lab11.exe: 0xC0000005: нарушение...

Ошибка доступа по адресу 0x00000000 - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; using namespace std; FILE...

Ошибка: Вызвано исключение по адресу - C++
Всем привет вот исходный код: #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include...

Ошибка: необработанное исключение по адресу - C++
Из за чего может вылезти такая ошибка? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; #include...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru