Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
cripok
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 15
12.03.2013, 18:00     Нарушения прав доступа при чтении #1
Добрый день. Возникла проблема:
Во время отладки программы возникает ошибка:
[IMG]http://s018.***********/i523/1303/ee/b424aef51e14.png[/IMG]
Если убрать строку
C++ (Qt)
1
printf("%sd",vib);
, то ошибка пропадёт, но программа всё равно не будет выполнять условие при vib==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
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
 
int chislo_znakov();
int vibor();
void file_create(int x, FILE* y);
 
int main()
{
    int max;
    short int vib;
    FILE *f;
  
    vib=vibor();
    
    printf("%sd",vib);
    if (vib==1)
    {
        max=chislo_znakov();
        char *b=(char *) malloc(max);
        file_create(max,f);
    }
    
 
 getche();
 return 0;   
}
//////////////////////////////////////////////////////////////////////////
int chislo_znakov()
{
    int p;
    printf("Vvedite chislo razryadov(max: 1 000 000): ");
    scanf("%d",&p);
    return p;
}
//////////////////////////////////////////////////////////////////////////
int vibor()
{
    int n;
    printf("Viberite sposob zadaniya chisla: \n");
    printf("1 - avtomaticheskiy (programmniy)\n");
    printf("2 - vruchnuyu (polzovatelskiy)\n");
    printf("Vash vibor: ");
    scanf("%d",&n);
    return n;
}
//////////////////////////////////////////////////////////////////////////
void file_create(int x, FILE* y)
{
    srand(time(NULL));
    y=fopen("C:\\Games\\chislo.txt","w");
    for(int j=0;j<x;j++) 
     fprintf(y,"%d",rand()%10);
    fclose(y);
}
Вот скрин отладки проги:
[IMG]http://s017.***********/i408/1303/79/29e939e86cc6.jpg[/IMG]
Далее выбираем первый вариант:
http://i5.pixs.ru/storage/9/9/3/1png...60_7370993.png
После чего выдаётся та ошибка (первый скрин) и прога зависает.

Добавлено через 4 минуты
Проблема решена: ошибка в формате:
НЕ правильно:
C
1
printf("%sd",vib);
правильно:
C
1
printf("%d",vib);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2013, 18:00     Нарушения прав доступа при чтении
Посмотрите здесь:

Нарушения прав доступа при записи(не в файл). C++
Нарушение прав доступа при чтении C++
Нарушение прав доступа при чтении C++
C++ Нарушение прав доступа при чтении
Нарушение прав доступа при чтении C++
C++ Нарушение прав доступа при чтении
C++ Нарушение прав доступа при чтении
C++ Ошибка нарушения прав доступа при чтении по адресу, возникающая при инициализации трехмерного массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5347 / 1730 / 320
Регистрация: 10.12.2010
Сообщений: 5,112
Записей в блоге: 3
12.03.2013, 18:02     Нарушения прав доступа при чтении #2
C++
1
printf("%sd",vib);
Переменная, которую вы выводите имеет тип short int. Ей соответствует спецификатор "%hd" а не тот, что у вас. То есть должно быть так в конечном счете:
C++
1
printf("%hd",vib);
Добавлено через 52 секунды
Цитата Сообщение от cripok Посмотреть сообщение
правильно:
Нет, не правильно.

P.S. и загружайте поясняющие изображения на форум в виде вложений.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
12.03.2013, 18:05     Нарушения прав доступа при чтении #3
Замените
C++
1
printf("%sd",vib);
на
C++
1
printf("%hd",vib);
Добавлено через 1 минуту
пока писал уже ответили сорри за дубляж
Yandex
Объявления
12.03.2013, 18:05     Нарушения прав доступа при чтении
Ответ Создать тему
Опции темы

Текущее время: 23:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru