Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
1

Небольшая проблемка с функцией scanf_s() в Visual Studio 2022

25.01.2023, 00:49. Показов 992. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот это:

C++
1
2
3
4
5
6
7
    int res = 0;
    while (!res) { 
        res = scanf_s("%d", &v);
        if (!res) {
            printf("error\n");
        }
    };
не работает!!!
Улетает в бесконечный цикл при неправильном вводе числа...
Я так понимаю, scanf_s() не отрабатывает второй и последующий разы...
Как лечить??
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.01.2023, 00:49
Ответы с готовыми решениями:

Расширение для Visual Studio 2022 на фреймворке Visual Studio Community Toolkit
Переписываю свое старое расширение под новую 2022 студию, вот нашел вроде хороший фреймворк:...

Visual Studio 2022 Перезапускает ПК
Приветствую всех, возникла такая проблема, при написании кода в Visual Studio 2022, в любой момент перезапускается ПК. Бывает это...

Ошибка в visual Studio 2022
Хотел сделать задание на языке Python но выдаёт такую ошибку, пробовал изменить версии языка, ничего не помогает

17
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12856 / 6722 / 1806
Регистрация: 18.10.2014
Сообщений: 17,020
25.01.2023, 01:05 2
Цитата Сообщение от savc Посмотреть сообщение
не работает!!!
Что такое "не работает"?

Цитата Сообщение от savc Посмотреть сообщение
Улетает в бесконечный цикл при неправильном вводе числа...
Что такой "неправильный ввод числа"?

Если введенные символы вообще не представляют числа, то они так и останутся во входном потоке и данный цикл будет бесконечно пытаться их читать. Все работает как ожидалось.

Цитата Сообщение от savc Посмотреть сообщение
Я так понимаю, scanf_s() не отрабатывает второй и последующий разы...
???

Цитата Сообщение от savc Посмотреть сообщение
Как лечить??
1. Не пытаться читать числа. Читать строки и потом разбирать их самостоятельно.

2. В случае неудачного чтения чистить входной буфер чем-то вроде

C
1
2
3
  int c;
  while((c = getchar()) != '\n' && c != EOF)
    ;
0
Модератор
 Аватар для Curry
5116 / 3358 / 536
Регистрация: 01.06.2013
Сообщений: 7,090
Записей в блоге: 9
25.01.2023, 01:07 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <limits>
 
int main()
{
    int v;
    for(;;){
       std::cout << "Please enter an integer value: ";
       std::cin >> v; 
       if (std::cin.fail()) 
       {
           std::cout << "\nerror\n";
           std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
       }else 
           break;
    }
    std::cout << "v=" << v << std::endl;
    return 0;
}
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
25.01.2023, 01:24  [ТС] 4
Я новичок в сях, и приведённые ответы мне не понятны.

Добавлено через 56 секунд
Хотелось бы прочитать число стандартной функцией scanf().
Ну уж если VS не хочет её глотать, то хотя бы scanf_s().

Добавлено через 47 секунд
И обработать случай, когда число прочесть не удалось.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12856 / 6722 / 1806
Регистрация: 18.10.2014
Сообщений: 17,020
25.01.2023, 01:33 5
Цитата Сообщение от savc Посмотреть сообщение
Я новичок в сях
Но это форум по С++, а не по С.

Цитата Сообщение от savc Посмотреть сообщение
Хотелось бы прочитать число стандартной функцией scanf().
Ну уж если VS не хочет её глотать, то хотя бы scanf_s().
This function or variable may be unsafe

Цитата Сообщение от savc Посмотреть сообщение
И обработать случай, когда число прочесть не удалось.
Ответы даны выше.
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
25.01.2023, 01:52  [ТС] 6
А разве C - не подмножество C++ ??

Добавлено через 8 минут
Чёт больно сложно.. на мой взгляд, стандартный компилятор должен по умолчанию поддерживать все стандартные функции, или я не прав??
Или VS - не стандартный компилятор? :-)

Добавлено через 4 минуты
Кривое многоточие этот ваш C .паный...
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12856 / 6722 / 1806
Регистрация: 18.10.2014
Сообщений: 17,020
25.01.2023, 02:03 7
Цитата Сообщение от savc Посмотреть сообщение
А разве C - не подмножество C++ ??
Нет, конечно. Но в данном конкретном примере - можно считать и так.

Цитата Сообщение от savc Посмотреть сообщение
Чёт больно сложно.. на мой взгляд, стандартный компилятор должен по умолчанию поддерживать все стандартные функции, или я не прав??
Да, но компилятор надо еще уметь конфигурировать. Для большинства компиляторов стандартность - это помеха. Поэтому ее нужно отдельно запрашивать.

Цитата Сообщение от savc Посмотреть сообщение
Или VS - не стандартный компилятор? :-)
Visual Studio - это IDE. В комплекте с которой идет один из самых лучших стандартных компиляторов.

Цитата Сообщение от savc Посмотреть сообщение
Кривое многоточие этот ваш C .паный...
Не думаю, что дело тут в С...
0
 Аватар для SmallEvil
3782 / 2708 / 765
Регистрация: 29.06.2020
Сообщений: 9,954
25.01.2023, 02:08 8
Цитата Сообщение от savc Посмотреть сообщение
Или VS - не стандартный компилятор?
VS - это среда.
И у майкрософт, свои стандарты и подходы, на все вещи.

Цитата Сообщение от savc Посмотреть сообщение
А разве C - не подмножество C++ ??
Нет.

Цитата Сообщение от savc Посмотреть сообщение
Хотелось бы прочитать число стандартной функцией scanf()
C++
1
2
3
4
5
6
7
8
#include <cstdio>
int main(){
    int n;
    while(scanf("%d", &n) != 1)
        while(fgetc(stdin)!='\n')
            ;
    printf("%d", n);
}
Все же идеальный выход :
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Не пытаться читать числа. Читать строки и потом разбирать их самостоятельно.
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
25.01.2023, 02:19  [ТС] 9
Если я всё буду делать самостоятельно, зачем мне тогда C? Давайте сразу на асме писать!!
0
 Аватар для SmallEvil
3782 / 2708 / 765
Регистрация: 29.06.2020
Сообщений: 9,954
25.01.2023, 02:23 10
Цитата Сообщение от savc Посмотреть сообщение
зачем мне тогда C?
Резонный вопрос.
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
25.01.2023, 02:28  [ТС] 11
Я перебираю языки, пытаюсь найти что-то высокоуровневое и компилируемое.
Пока что VS проигрывает Sinclair BASIC. Хотя, это интерпретатор... :-)
На нём по крайней мере, можно прочитать число!!
0
 Аватар для SmallEvil
3782 / 2708 / 765
Регистрация: 29.06.2020
Сообщений: 9,954
25.01.2023, 02:31 12
Цитата Сообщение от savc Посмотреть сообщение
Я перебираю языки, пытаюсь найти что-то высокоуровневое и компилируемое.
Java не попадалась ?
0
Модератор
Эксперт Java
 Аватар для alecss131
2741 / 1235 / 391
Регистрация: 11.08.2017
Сообщений: 3,826
Записей в блоге: 2
25.01.2023, 12:26 13
Цитата Сообщение от savc Посмотреть сообщение
зачем мне тогда C? Давайте сразу на асме писать
Ну так Си это и есть в некотором смысле асм, только с человеческим языком.
Цитата Сообщение от savc Посмотреть сообщение
что-то высокоуровневое и компилируемое
Попробуйте тогда С++, потом можно С#/Java/Go, можно будет и о памяти не заботиться (хотя и там можно суметь вызвать утечку памяти)
0
 Аватар для Kuzia domovenok
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,521
Записей в блоге: 1
25.01.2023, 12:28 14
alecss131, советую эту тему сразу в "священные воины" перенести. Автор явно не программу пишет, а троллит
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
25.01.2023, 12:55  [ТС] 15
Автор ищет себе язык программирования, пока, то, что хотел, написал на Free BASIC! И доволен.
Go - интересно! Но уж очень выкобенистый синтаксис!!

Добавлено через 49 секунд
C - как язык - неплох, но вот библиотеки никуда не годятся.

Добавлено через 45 секунд
Я же хочу на всё готовое, а иначе - я лучше на асме буду писать!

Добавлено через 9 минут
Ещё раз повторю, я не хочу никаких виртуальных машин - только в код процессора!!
0
 Аватар для Kuzia domovenok
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,521
Записей в блоге: 1
25.01.2023, 13:55 16
Цитата Сообщение от savc Посмотреть сообщение
Автор ищет себе язык программирования
alecss131, он сам признался, что тема - "какой ЯП лучше". Такая тема нужна во флудилке!
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
25.01.2023, 14:02  [ТС] 17
Тема про то, что в данный момент для данной задачи Free BASIC оказался лучше сей от Майкрософт.
0
25.01.2023, 14:10 18

Не по теме:

Kuzia domovenok, У меня в данном разделе полномочий нету

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.01.2023, 14:10
Помогаю со студенческими работами здесь

Visual Studio 2022 expied
Наконец то visual studio 2022 вышла и стала официальной. Поздравляю всех с тем что она вышла. Она более комфортная чем 2019

Visual Studio 2022 и GTK
Установил msys2 на диск C, затем с помощью pacman установил поддержку GTK. В настройках тестового проекта указал директории с включаемыми...

Кириллица в visual studio 2022
У меня есть python проект в visual studio 2022. Я пытаюсь записать путь к файлу в переменную, однако имя пользователя у меня написано на...

Компилятор Visual Studio 2022
Как называется компилятор Visual Studio 2022, чтобы в командной строке вызвать

Не устанавливается Visual Studio 2022
Не устанавливается Visual Studio 2022 Грузит примерно минут 20, а потом пишет, что не удается установить и просит проверить соединение...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru