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

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

Войти
Регистрация
Восстановить пароль
 
Rokky
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 14
#1

"Нарушение прав доступа при чтении "0x00000000"" - C++

07.12.2013, 21:24. Просмотров 720. Ответов 8
Метки нет (Все метки)

Добрый вечер, товарищи! Возникает ошибка "Нарушение прав доступа при чтении "0x00000000"". Не понимаю в чем проблема.



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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    FILE*file=fopen("D:\\studenty.txt", "rt");
    if(file==NULL)
    {
        cout<<"can't open file";
        system("pause");
        return -1;
    }
    double mrk1, mrk2, mrk3;
    char mas[100], surname[20], group[3], mark1[1], mark2[1], mark3[1];
    char*n, *m, *k, *p, *f;
    while(!feof(file))
    {
        
        fscanf (file, "%s\n", mas);
 
        n=strchr (mas, ';');
        strncpy (surname, mas, n-mas);
        surname[n-mas]='\0';
 
        k=strchr (n+1, ';');
        strncpy (group, mas, k-mas);
        group[k-mas]='\0';
 
        m=strchr (k+1, ';');
        p=strchr (m+1, ';');
        f=strchr (p+1, ';');
        strncpy (mark1, mas, m-mas);
        mark1 [m-mas]='\0';
 
        strncpy (mark2, mas, p-mas);
        mark2 [p-mas]='\0';
 
        strncpy (mark3, mas, f-mas);
        mark3 [f-mas]='\0';
 
        mrk1=atof(mark1);
        mrk2=atof(mark2);
        mrk3=atof(mark3);
 
        if ((mrk1<3)||(mrk2<3)||(mrk3<3))
        {
            cout<<surname<<";"<<group<<";"<<mark1<<";"<<mark2<<";"<<mark3<<'\n';
        }
    }
    fclose(file);
    system ("pause");
    return 0;
}
0
Миниатюры
"Нарушение прав доступа при чтении "0x00000000""  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2013, 21:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос "Нарушение прав доступа при чтении "0x00000000"" (C++):

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

"Нарушение прав доступа при чтении по адресу 0x00000000" - C++
код: #define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include &lt;math.h&gt; int strtoint(char *s) { int temp = 0; int i = 0; ...

Необработанное исключение в "0x00412b4a" в "kursovik.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000004". - C++
Программа компилируется нормально но потом на строчке MoveToEx(hdc,Mas.a]-&gt;x*20,Mas.a]-&gt;y*20,0); выдаёт ошибку Помогите пожалуйста...

Необработанное исключение в "0x00414558" в "467.exe": 0xC0000005: Нарушение прав доступа при чтении "0xabababbb" - C++
При выполнении этого кода #include &lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; int main () { int x; unsigned int...

Необработанное исключение в "0x775e15de" в "laba3.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfdfdfdf9". - C++
вылезает ошибка Необработанное исключение в &quot;0x775e15de&quot; в &quot;laba3.exe&quot;: 0xC0000005: Нарушение прав доступа при чтении &quot;0xfdfdfdf9&quot;. ...

Необработанное исключение в "0x76f015de" в "контрольная 1 задача 2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x334e2c64" - C++
доброго времени суток. Необработанное исключение в &quot;0x76f015de&quot; в &quot;контрольная 1 задача 2.exe&quot;: 0xC0000005: Нарушение прав доступа при...

8
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
07.12.2013, 21:29 #2
если strchr возвратит нулевой указатель то что cделает функция strncpy?
0
Rokky
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 14
07.12.2013, 22:15  [ТС] #3
Ну вообще мне необходимо разбить строку текстового файла и поместить в массивы (surname[], group[], mark1[], mark2[], mark3[] соответственно). Пример строки:
Smirnov; 101; 2; 3; 5;
strchr, по идее, возвращает указатель на символ ";", так как он у нас является разделительным. А ctrncpy должно скопировать, например, строку "Smirnov" в массив "surname[]".

Добавлено через 28 минут
Нашла ошибку. Ругается на указатель
C++
1
k=strchr (n+1, ';');
и все следующие указатели. Только вот как его переписать правильно?

Добавлено через 5 минут
igorrr37, что скажете?
0
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
07.12.2013, 22:22 #4
fscanf, если не ошибаюсь, считывает до первого пробела, а считывать надо сразу всю строку. Используй другую ф-цию чтения.
0
Rokky
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 14
08.12.2013, 00:53  [ТС] #5
igorrr37, вы имеете ввиду функцию fgets?
Если я прописываю
C++
1
fgets (mas, 100, file);
, то файл читается, но всеравно не правильно. И после этого
выбивает ту же ошибку.
(Посмотрите, 2-е фото - исходный файл. По условию задачи программа должна выводить на экран информацию о студенте если хотя бы одна из его оценок ниже 3. Оценки - это последние 3 цифры в строке).
0
Rokky
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 14
08.12.2013, 00:54  [ТС] #6
Скрины..
0
Миниатюры
"Нарушение прав доступа при чтении "0x00000000""   "Нарушение прав доступа при чтении "0x00000000""  
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
08.12.2013, 01:37 #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
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
 
int main()
{
 
    FILE*file=fopen("in.txt", "rt");
    if(file==NULL)
    {
        cout<<"can't open file";
        system("pause");
        return -1;
    }
    double mrk1, mrk2, mrk3;
    char mas[100], surname[20], group[10], mark1[5], mark2[5], mark3[5];
    char*n, *m, *k, *p, *f;
 
        while(!feof(file))
        {
            fgets(mas, 100, file);
 
            n=strchr (mas, ';');
            strncpy (surname, mas, n-mas);
            surname[n-mas]='\0';
 
            k=strchr (n+1, ';');
            strncpy (group, n+1, k-n-1);
            group[k-n-1]='\0';
 
            m=strchr (k+1, ';');
            p=strchr (m+1, ';');
            f=strchr (p+1, ';');
            strncpy (mark1, k+1, m-k-1);
            mark1 [m-k-1]='\0';
 
            strncpy (mark2, m+1, p-m-1);
            mark2 [p-m-1]='\0';
 
            strncpy (mark3, p+1, f-p-1);
            mark3 [f-mas]='\0';
 
            mrk1=atof(mark1);
            mrk2=atof(mark2);
            mrk3=atof(mark3);
 
            if ((mrk1<3)||(mrk2<3)||(mrk3<3))
            {
                cout<<surname<<";"<<group<<";"<<mark1<<";"<<mark2<<";"<<mark3<<'\n';
            }
        }
    fclose(file);
    system ("pause");
    return 0;
}
0
Rokky
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 14
08.12.2013, 02:11  [ТС] #8
igorrr37,
0
Миниатюры
"Нарушение прав доступа при чтении "0x00000000""  
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
08.12.2013, 02:34 #9
строку 42 забыл исправить
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
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
 
int main()
{
 
    FILE*file=fopen("in.txt", "rt");
    if(file==NULL)
    {
        cout<<"can't open file";
        system("pause");
        return -1;
    }
    double mrk1, mrk2, mrk3;
    char mas[100], surname[20], group[10], mark1[5], mark2[5], mark3[5];
    char*n, *m, *k, *p, *f;
 
        while(!feof(file))
        {
            fgets(mas, 100, file);
 
            n=strchr (mas, ';');
            strncpy (surname, mas, n-mas);
            surname[n-mas]='\0';
 
            k=strchr (n+1, ';');
            strncpy (group, n+1, k-n-1);
            group[k-n-1]='\0';
 
            m=strchr (k+1, ';');
            p=strchr (m+1, ';');
            f=strchr (p+1, ';');
            strncpy (mark1, k+1, m-k-1);
            mark1 [m-k-1]='\0';
 
            strncpy (mark2, m+1, p-m-1);
            mark2 [p-m-1]='\0';
 
            strncpy (mark3, p+1, f-p-1);
            mark3 [f-p-1]='\0';
 
            mrk1=atof(mark1);
            mrk2=atof(mark2);
            mrk3=atof(mark3);
 
            if ((mrk1<3)||(mrk2<3)||(mrk3<3))
            {
                cout<<surname<<";"<<group<<";"<<mark1<<";"<<mark2<<";"<<mark3<<'\n';
            }
        }
    fclose(file);
    system ("pause");
    return 0;
}
1
08.12.2013, 02:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 02:34
Привет! Вот еще темы с ответами:

Необработанное исключение в "0x0fc1d484 (msvcr100d.dll)" в "1.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00aee0af" - C++
помогите разобраться в чем ошибка? необходимо, чтобы ввод массива осуществлялся с клавиатуры построчно #include &lt;stdio.h&gt; ...

Ошибка Необработанное исключение в "0x001d18f8" в "lr7v2.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcde9" - C++
class Hdd { public: char Hdd_name; int total_space; int free_space; int speed; Hdd *next; Hdd *previous; };

Необработанное исключение в "0x1027c9c7 (msvcr100d.dll)" в "gh.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefeee". - C++
// gh.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;conio.h&quot; ...

Необработанное исключение в "0x0138169d" в "kursovaya.exe": 0xC0000005: Нарушение прав доступа при чтении "0x6 - C++
Программа выдает ошибку, может кто видит где? и как исправить Код: #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cmath&gt; using...


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

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

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