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

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

25.01.2023, 00:49. Показов 1013. Ответов 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
12875 / 6739 / 1810
Регистрация: 18.10.2014
Сообщений: 17,066
25.01.2023, 01:05
Цитата Сообщение от savc Посмотреть сообщение
не работает!!!
Что такое "не работает"?

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

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

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

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

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

C Скопировано
1
2
3
  int c;
  while((c = getchar()) != '\n' && c != EOF)
    ;
0
Модератор
 Аватар для Curry
5145 / 3377 / 536
Регистрация: 01.06.2013
Сообщений: 7,213
Записей в блоге: 9
25.01.2023, 01:07
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  [ТС]
Я новичок в сях, и приведённые ответы мне не понятны.

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

Добавлено через 47 секунд
И обработать случай, когда число прочесть не удалось.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12875 / 6739 / 1810
Регистрация: 18.10.2014
Сообщений: 17,066
25.01.2023, 01:33
Цитата Сообщение от 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  [ТС]
А разве C - не подмножество C++ ??

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

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

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

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

Цитата Сообщение от savc Посмотреть сообщение
Кривое многоточие этот ваш C .паный...
Не думаю, что дело тут в С...
0
 Аватар для SmallEvil
3845 / 2762 / 775
Регистрация: 29.06.2020
Сообщений: 10,126
25.01.2023, 02:08
Цитата Сообщение от 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  [ТС]
Если я всё буду делать самостоятельно, зачем мне тогда C? Давайте сразу на асме писать!!
0
 Аватар для SmallEvil
3845 / 2762 / 775
Регистрация: 29.06.2020
Сообщений: 10,126
25.01.2023, 02:23
Цитата Сообщение от savc Посмотреть сообщение
зачем мне тогда C?
Резонный вопрос.
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
25.01.2023, 02:28  [ТС]
Я перебираю языки, пытаюсь найти что-то высокоуровневое и компилируемое.
Пока что VS проигрывает Sinclair BASIC. Хотя, это интерпретатор... :-)
На нём по крайней мере, можно прочитать число!!
0
 Аватар для SmallEvil
3845 / 2762 / 775
Регистрация: 29.06.2020
Сообщений: 10,126
25.01.2023, 02:31
Цитата Сообщение от savc Посмотреть сообщение
Я перебираю языки, пытаюсь найти что-то высокоуровневое и компилируемое.
Java не попадалась ?
0
Модератор
Эксперт Java
 Аватар для alecss131
2752 / 1245 / 393
Регистрация: 11.08.2017
Сообщений: 3,871
Записей в блоге: 2
25.01.2023, 12:26
Цитата Сообщение от savc Посмотреть сообщение
зачем мне тогда C? Давайте сразу на асме писать
Ну так Си это и есть в некотором смысле асм, только с человеческим языком.
Цитата Сообщение от savc Посмотреть сообщение
что-то высокоуровневое и компилируемое
Попробуйте тогда С++, потом можно С#/Java/Go, можно будет и о памяти не заботиться (хотя и там можно суметь вызвать утечку памяти)
0
 Аватар для Kuzia domovenok
4265 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,526
Записей в блоге: 1
25.01.2023, 12:28
alecss131, советую эту тему сразу в "священные воины" перенести. Автор явно не программу пишет, а троллит
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 21
25.01.2023, 12:55  [ТС]
Автор ищет себе язык программирования, пока, то, что хотел, написал на Free BASIC! И доволен.
Go - интересно! Но уж очень выкобенистый синтаксис!!

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

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

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

Не по теме:

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
Ответ Создать тему
Новые блоги и статьи
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер