Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
1

Ошибка Нарушение прав доступа при чтении

21.06.2012, 18:15. Показов 1561. Ответов 10
Метки нет (Все метки)

Вот код на Pure C:
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
#include <stdio.h>
void getchrs(int a[8]);
int ceven(int a);
 
main(void){
int a[8];
int i;
for(i=0;i!=7;++i){
    a[i]=0;}
getchrs(a[8]);
if ((a[0]-a[1])!=0 && a[0]!=0 && a[1]!=0)
    printf("Error! Not enought\t %ud parentheses \n",(a[0]-a[1]));
else if ((a[2]-a[3])!=0 && a[2]!=0 && a[3]!=0)
    printf("Error! Not enought\t 
 brackets \n",(a[2]-a[3]));
else if ((a[4]-a[5])!=0 && a[4]!=0 && a[5]!=0)
    printf("Error! Not enought\t 
 braces\n",(a[4]-a[5]));
else if (ceven(a[6]==0))
    printf("Error! Not enought single quotes \n");
else if (ceven(a[7]==0))
    printf("Error! Not enought double quotes\n");
else printf("No errors were detected\n");
getchar();
 
 
    return 0;
 
}
void getchrs(int a[8]){
    int c;
while((c=getchar())!=EOF)
    if(c=='(')
        ++a[0];
    else if(c==')')
        ++a[1];
    else if(c=='[')
        ++a[2];
    else if(c==']')
        ++a[3];
    else if(c=='{')
        ++a[4];
    else if(c=='}')
        ++a[5];
    else if(c==39)
        ++a[6];
    else if(c==34)
        ++a[7];
}
int ceven(int a){
int g;
if((a/2)*2==a && a!=0)
    g=1;
else g=0;
return g;
}
/*
' - 39
" - 34
*/
MSVS говорит ошибка "Нарушение прав доступа при чтении". Ошибка появляется при исполнении, программа компилируется. В чем ошибка?

Добавлено через 3 минуты
P.S обрывается на 32ой строке (++a[0]), а там вроде все ок

Добавлено через 3 минуты
CXX0030: невозможно вычислить выражение
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2012, 18:15
Ответы с готовыми решениями:

Нарушение прав доступа при чтении
Список. Не могу разобраться с двумя функциями, компилятор не находит синтаксических ошибок, а во...

Нарушение прав доступа при чтении Си
В общем, стабильно решаю 1 проблему и получаю 2 новых. В конце при вводе товара для поиска выходит...

Нарушение прав доступа при чтении по адресу
#define _CRT_SECURE_NO_WARNINGS // для возможности использования scanf #include &lt;stdio.h&gt;...

Нарушение прав доступа при чтении по адресу
Здраствуйте, задано переписать функцию strspn(canst char *s1, const char *s2) так чтоб она искала...

10
Псевдослучайный
1942 / 1142 / 97
Регистрация: 13.09.2011
Сообщений: 3,213
21.06.2012, 18:18 2
А про то, что кастовать int к указателю нехорошо, он не говорит(10)?
0
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
21.06.2012, 18:22  [ТС] 3
Цитата Сообщение от NoMasters Посмотреть сообщение
А про то, что кастовать int к указателю он не говорит(10)?
Нет, а как это? Что вы имели ввиду?
0
Псевдослучайный
1942 / 1142 / 97
Регистрация: 13.09.2011
Сообщений: 3,213
21.06.2012, 18:23 4
Вопрос: что передаётся getchrs в десятой строке?
1
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
21.06.2012, 18:25  [ТС] 5
Цитата Сообщение от NoMasters Посмотреть сообщение
Внимание, вопрос: что передаётся getchrs в десятой строке?
целочисленный массив
0
1252 / 702 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
21.06.2012, 18:30 6
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 <stdio.h>
 
void getchrs(int a[])
{
    int c;
    while((c=getchar())!=EOF)
        if(c=='(')
            ++a[0];
        else if(c==')')
            ++a[1];
        else if(c=='[')
            ++a[2];
        else if(c==']')
            ++a[3];
        else if(c=='{')
            ++a[4];
        else if(c=='}')
            ++a[5];
        else if(c==39)
            ++a[6];
        else if(c==34)
            ++a[7];
}
 
int ceven(int a)
{
    int g;
    if((a/2)*2==a && a!=0)
        g=1;
    else g=0;
    return g;
}
 
int main(void)
{
    int a[8];
    int i;
    for(i=0; i!=7;++i)
    {
        a[i]=0;
    }
    a[7] = getchar();
    if ((a[0]-a[1])!=0 && a[0]!=0 && a[1]!=0)
        printf("Error! Not enought\t %ud parentheses \n",(a[0]-a[1]));
    else if ((a[2]-a[3])!=0 && a[2]!=0 && a[3]!=0)
        printf("Error! Not enought\t brackets \n",(a[2]-a[3]));
    else if ((a[4]-a[5])!=0 && a[4]!=0 && a[5]!=0)
        printf("Error! Not enought\t braces\n",(a[4]-a[5]));
    else if (ceven(a[6]==0))
        printf("Error! Not enought single quotes \n");
    else if (ceven(a[7]==0))
        printf("Error! Not enought double quotes\n");
    else printf("No errors were detected\n");
    getchar();
    return 0;
}
0
Псевдослучайный
1942 / 1142 / 97
Регистрация: 13.09.2011
Сообщений: 3,213
21.06.2012, 18:35 7
Цитата Сообщение от VadimAndronov Посмотреть сообщение
целочисленный массив
nope. Там передаётся мифический восьмой член массива a.
1
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
21.06.2012, 18:55  [ТС] 8
Цитата Сообщение от NoMasters Посмотреть сообщение
nope. Там передаётся мифический восьмой член массива a.
Damn it.

Добавлено через 5 минут
Цитата Сообщение от softmob Посмотреть сообщение
C
1
2
#include <stdio.h>...
return 0;}
Не то. Во-первых, программа завершается при нажатии Enter'a. Во-вторых, выводит только "No errors were detected".

Добавлено через 8 минут
Разобрался. Еще вопрос: как в функции printf записать вывод целого числа без знака. Записал %ud - воводит 1d.
0
593 / 531 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
22.06.2012, 16:17 9
Цитата Сообщение от VadimAndronov Посмотреть сообщение
Разобрался. Еще вопрос: как в функции printf записать вывод целого числа без знака. Записал %ud - воводит 1d.
abs ?

а вообще аккуратнее с %u, он тебе не отбросит просто знак....
0
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
23.06.2012, 16:07  [ТС] 10
Цитата Сообщение от OstapBender Посмотреть сообщение
abs ?

а вообще аккуратнее с %u, он тебе не отбросит просто знак....
А что он страшного сделает?
0
593 / 531 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
23.06.2012, 21:50 11
переведет знаковое в беззнаковое.
допустим 8 битовое число -1 выглядит в 2-чном коде как

11111111

где 1ая единица - знак

оно же в беззнаковом варианте будет представлять собой 255.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2012, 21:50

0xC0000005: нарушение прав доступа при чтении по адресу 0x00000003
Доброго времени суток!Возникла проблема при вводе в консоль массива , после ввода элементов консоль...

Нарушение прав доступа при чтении при работе с большим массивом
Здравствуйте. Пытаюсь заполнить большой массив, вроде правильно объявил его, но на разных итерациях...

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

Нарушение прав доступа при чтении "0xa99e99d8"
При компиляции программы #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; #define...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru