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

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

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

Ошибка времени выполнения при использовании функции scanf_s - C++

22.01.2016, 08:54. Просмотров 1342. Ответов 4
Метки нет (Все метки)

Есть код создания библиотеки книг, это его часть. Если потребуется могу скинуть весь код, но он без комментариев

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void library::print_book(void) {
    printf("=================\n");
    spisok_this = spisok;
    for (int i = 0; i < 500; i++) {
        if (spisok_this == null) break;
        printf("%s %s %d\n", spisok_this->author, spisok_this->name, spisok_this->pages);
        spisok_this = spisok_this->spisok_next;
    }
    printf("=================\n\n");
};
int library::menu(void) {
    while (1 == 1) {
        char *name = new char[100];
        char *author = new char[100];
        int pages;
        printf("if u wanna add book print 1, if u wanna delete book print 2, if u wanna end print 3\n");
        scanf_s("%d", &a);
        if (a == 1) {
            printf("name author pages");
            scanf_s("%s" "%s" "%d", name, author, &pages);
            add_book(name, author, pages);
 
        };
На вот этой строке выходит сообщение об исключении:
C++
1
            scanf_s("%s" "%s" "%d", name, author, &pages);
Вот само исключение: Необработанное исключение по адресу 0x1005F773 (ucrtbased.dll) в ConsoleApplication8.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00333000.

Выдается три предупреждения:

Предупреждение C4473 "scanf_s": передано недостаточно аргументов для строки формата ConsoleApplication8 i:\information\consoleapplication8\consoleapplication8\consoleapplication8.cpp строка 136


Предупреждение C4477 'scanf_s' : format string '%s' requires an argument of type 'char *', but variadic argument 3 has type 'int *' ConsoleApplication8 i:\information\consoleapplication8\consoleapplication8\consoleapplication8.cpp строка 136


Предупреждение C4477 'scanf_s' : format string '%s' requires an argument of type 'int', but variadic argument 2 has type 'char *' ConsoleApplication8 i:\information\consoleapplication8\consoleapplication8\consoleapplication8.cpp строка 136

Строка 136 это и есть вот эта строка:
C++
1
            scanf_s("%s" "%s" "%d", name, author, &pages);
Помогите разобраться в чем дело, студия 2015
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2016, 08:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка времени выполнения при использовании функции scanf_s (C++):

Ошибка выполнения программы при использовании функций - C++
Все привет, друзья! Имеется задача: Последовательность {Ai}i-1 образована по правилу Ai=1/i. Дано вещественное число 0&lt;eps&lt;0.1. ...

Ошибка при использовании функции-члена - C++
Доброго времени суток! При использовании функции-члена print() с объектом класса bin_image , созданом конструктором по умолчанию...

Ошибка при использовании дружественной функции - C++
Доброго времени суток! Не могу понять, в строках 17 и 20 пишет, что член hate, объявленный в строке 8 недоступен Подскажите, в чем...

Ошибка при использовании vector в заголовке функции - C++
/home/motoroller/qtProjects/laba1/main.cpp:8: ошибка: 'std::vector' is not a type bool extract_class_head(string str, std::vector...

возникает ошибка при использовании массива, как параметр функции - C++
Добрый вечер. Помогите разобраться, пожалуйста. Задача: Проверьте, верно ли, что количество строк матрицы А(n*n), в которой все числа...

Ошибка времени выполнения. - C++
Вот код: void Add_Kod ( _kod*&amp; KodBuf, int a, char* buf, char* buf2) { if(a==1) { KodBuf = new _kod; KodBuf.ch = *(buf);...

4
deepz
61 / 61 / 33
Регистрация: 04.10.2013
Сообщений: 254
22.01.2016, 18:29 #2
Цитата Сообщение от IveningInnertia Посмотреть сообщение
scanf_s("%s" "%s" "%d", name, author, &pages)
C
1
2
scanf_s("%s%s%d", name, author, &pages);
так по идее должно считываться
0
IveningInnertia
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 12
22.01.2016, 19:50  [ТС] #3
К сожалению не помогло, все те-же исключения выходят
0
deepz
61 / 61 / 33
Регистрация: 04.10.2013
Сообщений: 254
22.01.2016, 19:56 #4
если name, author pages, поля структуры, то
тогда надо считывать
C
1
scanf_s("%s%s%d",spisok_this->name, spisok_this->author, spisok_this->&pages);
Добавлено через 1 минуту
а нет, все верно

Добавлено через 44 секунды
C
1
scanf_s("%s%s%d", &name, &author, &pages);
а если поставить &?
0
nord_v
228 / 177 / 69
Регистрация: 22.08.2013
Сообщений: 724
22.01.2016, 20:16 #5
Цитата Сообщение от IveningInnertia Посмотреть сообщение
К сожалению не помогло, все те-же исключения выходят
Может почитаешь про scanf_s?

Добавлено через 6 минут
А лучше не пользоваться нестандартом.
0
22.01.2016, 20:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2016, 20:16
Привет! Вот еще темы с ответами:

Ошибка времени выполнения - C++
Я пишу проэкт в Visual Studia 2008 на C++. У меня есть несколько проблем. Во-первых, когда я собираю финальную версию (release) и...

Подсчет времени выполнения функции - C++
Делаю 2 вида сортировки, не знаю как подсчитать их время. #include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;conio.h&gt; using namespace...

Ошибка времени выполнения (terminate) - C++
вот этот код // на всякий случай привожу весь код, // т.к. не понимаю что именно вызывает ошибку // verylong.h #ifndef...

Замер времени выполнения функции на ядре - C++
Здравствуйте! Не могу понять почему не считает время выполнения алгоритма на ядре какие бы я значения z и x не вводила бы. Каждый раз время...


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

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

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