Visual studio scanf ошибка

I have created a small application to find max number by using user-defined function with parameter. When I run it, it shows this message

Error 1 error C4996: ‘scanf’: This function or variable may be unsafe.
Consider using scanf_s instead. To disable deprecation, use
_CRT_SECURE_NO_WARNINGS. See online help for details.

What do I do to resolve this?

This is my code

#include<stdio.h>

void findtwonumber(void);
void findthreenumber(void);

int main() {
    int n;
    printf("Fine Maximum of two number\n");
    printf("Fine Maximum of three number\n");

    printf("Choose one:");
    scanf("%d", &n);
    if (n == 1)
    {
        findtwonumber();
    }
    else if (n == 2)
    {
        findthreenumber();
    }
    return 0;
}

void findtwonumber(void)
{
    int a, b, max;
    printf("Enter a:");
    scanf("%d", &a);
    printf("Enter b:");
    scanf("%d", &b);
    if (a>b)
        max = a;
    else
        max = b;
    printf("The max is=%d", max);
}

void findthreenumber(void)
{
    int a, b, c, max;
    printf("Enter a:");
    scanf("%d", &a);
    printf("Enter b:");
    scanf("%d", &b);
    printf("Enter c:");
    scanf("%d", &c);
    if (a>b)
        max = a;
    else if (b>c)
        max = b;
    else if (c>a)
        max = c;
    printf("The max is=%d", max);
}

Zloy_Tip

1 / 1 / 0

Регистрация: 01.09.2020

Сообщений: 2

1

01.09.2020, 17:10. Показов 8030. Ответов 23

Метки scanf (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте, Уважаемые!
Начал изучать язык Си и буквально в начале книги уже наткнулся на неприятность.
При запуске программы, компилятор ругается на функцию scanf. проверил не один раз, с точки зрения синтаксиса написано все верно.
Мой код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
main() {
    int a, number;
 
    printf("Enter number int: ");
        scanf("%d", &a);
 
    if (number != 7) {
        printf("The variable number is not equal to 7");
    }
 
    printf("This is a C program \n");
    printf("This is a C \n program \n\n");
    printf("This \nis \na \nC \n program \n\n");
 
    return 0;
}

Компилятор пишет:
Ошибка C4996 ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Project2 C:\Users\Professional\Desktop\Projects\Project2\Project2\Main.c 8

не пойму, что там не так…?
ниже на код не обращайте внимание, делаю не большие задачки все подряд просто в одном файле, смотрю как работает.



1



Annemesski

2505 / 1228 / 454

Регистрация: 08.11.2016

Сообщений: 3,362

01.09.2020, 17:16

2

Лучший ответ Сообщение было отмечено Zloy_Tip как решение

Решение

Zloy_Tip, закидоны VS-ки, не обращайте внимания или пропишите перед включением заголовков

C
1
#define _CRT_SECURE_NO_WARNINGS



3



Эксперт .NET

6433 / 3965 / 1583

Регистрация: 09.05.2015

Сообщений: 9,272

01.09.2020, 17:49

3

Написано же что функция scanf небезопасна, используйте вместо нее scanf_s, что тут непонятного?



0



3799 / 2349 / 413

Регистрация: 09.09.2017

Сообщений: 10,096

01.09.2020, 18:12

4

А scanf_s нестандартна, что еще хуже. Правильный способ уже указал Annemesski: приказать компилятору следовать стандарту.



1



Эксперт .NET

6433 / 3965 / 1583

Регистрация: 09.05.2015

Сообщений: 9,272

01.09.2020, 18:29

5

Цитата
Сообщение от COKPOWEHEU
Посмотреть сообщение

А scanf_s нестандартна, что еще хуже.

Бред не несите… https://en.cppreference.com/w/c/io/fscanf

Цитата
Сообщение от COKPOWEHEU
Посмотреть сообщение

Правильный способ уже указал Annemesski: приказать компилятору следовать стандарту.

Не делайте так как сказал Annemesski, не подвергайте себя и других опасности!!!



0



96 / 69 / 27

Регистрация: 26.08.2020

Сообщений: 361

01.09.2020, 18:37

6

Я тебе советую использовать компилятор GCC.У Microsoft всегда сове видение,причем они не соответствуют стандарту языка!



0



из племени тумба-юбма

2435 / 1764 / 411

Регистрация: 29.11.2015

Сообщений: 8,571

Записей в блоге: 15

01.09.2020, 18:40

7

Someone007, а как тогда быть, если используется другая IDE, отличная от VS? На функции scanf_s будет выдавать ошибку.



0



Эксперт .NET

6433 / 3965 / 1583

Регистрация: 09.05.2015

Сообщений: 9,272

01.09.2020, 18:46

8

Цитата
Сообщение от мама Стифлера
Посмотреть сообщение

а как тогда быть, если используется другая IDE, отличная от VS? На функции scanf_s будет выдавать ошибку.

С чего вдруг? scanf_s это стандартная С функция…



0



3799 / 2349 / 413

Регистрация: 09.09.2017

Сообщений: 10,096

01.09.2020, 23:15

9

Цитата
Сообщение от Someone007
Посмотреть сообщение

Не делайте так как сказал Annemesski, не подвергайте себя и других опасности!!!

Именно! Не пользуйтесь платформо-зависимыми костылями от Майкрософт! Нестандартные функции вроде scanf_s кроме них не поддерживает никто.
Если вам нужна безопасность, изучайте документацию на стандартные функции. В подавляющем большинстве случаев их достаточно.

Цитата
Сообщение от Someone007
Посмотреть сообщение

С чего вдруг? scanf_s это стандартная С функция…

Вот это вы успешно проглядели?

As with all bounds-checked functions, scanf_s , fscanf_s, and sscanf_s are only guaranteed to be available if __STDC_LIB_EXT1__ is defined by the implementation and if the user defines __STDC_WANT_LIB_EXT1__ to the integer constant 1 before including stdio.h.

Иначе говоря, функции *_s опциональны, а вовсе не стандартны.



0



Эксперт .NET

6433 / 3965 / 1583

Регистрация: 09.05.2015

Сообщений: 9,272

02.09.2020, 00:16

10

Цитата
Сообщение от COKPOWEHEU
Посмотреть сообщение

Иначе говоря, функции *_s опциональны, а вовсе не стандартны.

То что они опциональны, не отменяет того факта что они часть стандарта.



0



Вездепух

Эксперт CЭксперт С++

11087 / 6054 / 1651

Регистрация: 18.10.2014

Сообщений: 15,183

02.09.2020, 00:30

11

Цитата
Сообщение от Someone007
Посмотреть сообщение

То что они опциональны, не отменяет того факта что они часть стандарта.

Он просто вбрасывает эту чушь во все темы, где упоминаются эти функции. Лучше просто не обращать на это внимания.

Функции группы _s стандартны. Этот вопрос закрыт и не обсуждается. Не тратьте время на бессмысленный флуд.

Добавлено через 2 минуты

Цитата
Сообщение от scanf
Посмотреть сообщение

У Microsoft всегда сове видение,причем они не соответствуют стандарту языка!

Не надо здесь пороть «пионэрскую» чушь.



0



Модератор

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

12222 / 7354 / 1730

Регистрация: 25.07.2009

Сообщений: 13,461

02.09.2020, 04:56

12

TheCalligrapher, просто для расширения кругозора назовите хоть один компилятор не от Майкрософт, поддерживающий эти «стандартные» функции.

Цитата
Сообщение от Someone007
Посмотреть сообщение

Бред не несите

Цитата
Сообщение от TheCalligrapher
Посмотреть сообщение

Не надо здесь пороть «пионэрскую» чушь

И вообще, будьте оба немного сдержаннее. То, что не все разделяют вашу странную привязанность к M$ — не повод для хамства.



0



Вездепух

Эксперт CЭксперт С++

11087 / 6054 / 1651

Регистрация: 18.10.2014

Сообщений: 15,183

02.09.2020, 05:22

13

Цитата
Сообщение от easybudda
Посмотреть сообщение

просто для расширения кругозора назовите хоть один компилятор не от Майкрософт, поддерживающий эти «стандартные» функции

А, какое это имеет значение? Если бы подобные соображения имели вес, то комитет по стандартизации никогда бы не включил эти функции в стандарт языка. (Скажете, что это следствие «странной привязанности к M$С» самого комитета?). С другой стороны, несмотря на то, что, например, функция strdup присутствует практически везде, стандартной она не является. Так что «поддержка компиляторами» и «стандартность» — это совершенно ортогональные понятия.

К тому же предыдущий оратор пытается навязать нам некую более широкую «логику», согласно которой опциональные свойства языка или стандартной библиотеки являются «нестандартными» (???). В эту категорию, кстати, попадают и VLA, типы вроде uint32_t, uintptr_t, errno_t и многое другое. И эта загадочная ложная «логика» упорно насаждается вышеупомянутым оратором в каждой ветке, где упоминаются функции группы _s.

Я последнее время игнорирую эти вбросы, но время от времени их следует пресекать, особенно когда делаются попытки насаждения подобных домыслов среди начинающих. Если бы речь шла о портабельности кода, то замечания о функциях группы _s были бы вполне уместны. Но в контексте стандартности — пресекать нещадно.



0



3799 / 2349 / 413

Регистрация: 09.09.2017

Сообщений: 10,096

02.09.2020, 07:45

14

Цитата
Сообщение от TheCalligrapher
Посмотреть сообщение

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

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

Цитата
Сообщение от TheCalligrapher
Посмотреть сообщение

В эту категорию, кстати, попадают и VLA, типы вроде uint32_t, uintptr_t, errno_t и многое другое

Про VLA сказать не могу. Просто не интересовался, но слышал, что ее использование чаще мешает, поэтому и смысла пропагандировать нет.
А вот int*_t объективно предпочтительнее еще более нестандартных BYTE, DWORD, u8 и т.д. Ну и если назовете компилятор, который этого не поддерживает — будет полезно. В отличие от того бреда что уже наговорили.

Цитата
Сообщение от TheCalligrapher
Посмотреть сообщение

Я последнее время игнорирую эти вбросы, но время от времени их следует пресекать, особенно когда делаются попытки насаждения подобных домыслов среди начинающих.

Пресекать надо бездумный формализм из серии «так сказано в стандарте, это ИстинаЪ, молитесь ей». Программирование- ремесло, а не религия. Поэтому каждое утверждение должно быть обосновано.
Так и тут: навязывать стандартизованные (если уж вашему формализму не по нраву «стандартные») типы вроде int16_t полезно. Потому что типы фиксированного размера нужны, а данный вариант, в отличие от других существующих, подкреплен стандартом Си и поддерживается большинством компиляторов. Иначе говоря не столь важно стандарт это или нет, на сегодня этот вариант лучше прочих.
И пресекать навязывание псевдо-безопасных функций вроде scanf_s тоже нужно. Потому что поддерживаются они одним-единственным компилятором (подумайте об этом: профессиональные разработчики даже не пытаются их реализовать). Кроме того, эти функции добавляют иллюзию безопасности, что, вообще-то, опаснее стандартного аналога, изначально постулируемой как требующего внимания. Реальные проблемы, к которым это приведет (помимо снижения безопасности, естественно): переход между архитектурами (в т.ч. на микроеонтроллеры и телефоны), проблемы с поиском помощи (желающий помочь банально не сможет воспроизвести ошибку).



1



из племени тумба-юбма

2435 / 1764 / 411

Регистрация: 29.11.2015

Сообщений: 8,571

Записей в блоге: 15

02.09.2020, 11:18

15

Ну тут пожалуй, я соглашусь с COKPOWEHEU. Если Майкрософт добились, чтоб их новые, «безопасные» функции для их же продукта были занесены в стандарт, еще не означает того, что данные функции можно называть стандартными. Проще сказать так, что для компилятора от Майкрософт, функции группы _s являются стандартными, для остальных компиляторов — нет. Но опять же говоря о безопасности, ведь знающий человек просто напишет код грамотно, тогда и никакого переполнения буфера не будет.

Вообще Майкрософт в силу своего влияния и убеждения могут довольно много, причем делают это они не считаясь не скем. Это касается и добровольно-принудительного переселения всех пользователей на Windows10, и производства новых процессоров, поддерживающих только новую OS. Компания не брезгует использовать любые доступные методы, порой даже весьма жесткие, лишь бы задавить своих конкурентов и продвигать свои продукты.

Не подумайте что я негативно отношусь к их продуктам, нет. Я негативно отношусь к их политике поведения на рынке.



1



easybudda

Модератор

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

12222 / 7354 / 1730

Регистрация: 25.07.2009

Сообщений: 13,461

02.09.2020, 13:55

16

Цитата
Сообщение от TheCalligrapher
Посмотреть сообщение

А, какое это имеет значение?

«Причём тут борщ, когда такие дела на кухне?!» (с)

Цитата
Сообщение от TheCalligrapher
Посмотреть сообщение

функция strdup присутствует практически везде, стандартной она не является

Ну она в POSIX входит. К тому же её нужность и полезность, как и многих других пришедших из BSD вещей, становится очевидной по мере использования.

Цитата
Сообщение от TheCalligrapher
Посмотреть сообщение

Скажете, что это следствие «странной привязанности к M$С» самого комитета?

Ну может мелкомягкие им просто денег занесли на «дальнейшее развитие»…

Цитата
Сообщение от TheCalligrapher
Посмотреть сообщение

VLA, типы вроде uint32_t, uintptr_t, errno_t

… входят в ANSI C 99, нормальную поддержку которого M$ сделать так и не удосужились. А в С 11 стали опцией скорее всего по той же причине, по которой были включены *_s функции.

Цитата
Сообщение от COKPOWEHEU
Посмотреть сообщение

Пресекать надо бездумный формализм из серии «так сказано в стандарте, это ИстинаЪ, молитесь ей». Программирование- ремесло, а не религия.

Цитата
Сообщение от COKPOWEHEU
Посмотреть сообщение

Про VLA сказать не могу. Просто не интересовался, но слышал, что ее использование чаще мешает, поэтому и смысла пропагандировать нет.

Я бы сказал, что использование VLA в чём-то сходно с использованием рекурсивных функций — если бездумно их пихать везде, где надо и не надо, обязательно нарвётесь на неприятности. А при разумном подходе может оказаться вполне удобным инструментом…

Zloy_Tip, короче, прийдётся выбирать между

Цитата
Сообщение от Annemesski
Посмотреть сообщение

закидоны VS-ки, не обращайте внимания или пропишите перед включением заголовков

C
1
#define _CRT_SECURE_NO_WARNINGS

и

Цитата
Сообщение от Someone007
Посмотреть сообщение

Написано же что функция scanf небезопасна, используйте вместо нее scanf_s, что тут непонятного?

По мне правильнее первое — как минимум, код будет переносимым и не привязанным к единственному компилятору. Если готовитесь стать адептом культа M$, смело выбирайте второе…



0



Вездепух

Эксперт CЭксперт С++

11087 / 6054 / 1651

Регистрация: 18.10.2014

Сообщений: 15,183

02.09.2020, 14:04

17

Цитата
Сообщение от easybudda
Посмотреть сообщение

… входят в ANSI C 99,

…. являются опциональными в С99 (кроме VLA), т.е, согласно «логике» вышеупомянутого оратора, нестандартными.

Цитата
Сообщение от easybudda
Посмотреть сообщение

нормальную поддержку которого M$ сделать так и не удосужились.

…нормальную поддержку которого MS реализовали уже давно.



0



3799 / 2349 / 413

Регистрация: 09.09.2017

Сообщений: 10,096

02.09.2020, 17:51

18

Цитата
Сообщение от easybudda
Посмотреть сообщение

VLA, типы вроде uint32_t, uintptr_t, errno_t
… входят в ANSI C 99, нормальную поддержку которого M$ сделать так и не удосужились. А в С 11 стали опцией скорее всего по той же причине, по которой были включены *_s функции.

Скорее, потому что строго 16-битного типа может быть не предусмотрено архитектурой. Или, скажем, строго 8-битного. Вроде бывают такие экзотические камни, хотя я их не видел.
При том что int_fast32_t и int_least32_t если не ошибаюсь, таки обязательны даже для них.

Цитата
Сообщение от TheCalligrapher
Посмотреть сообщение

…нормальную поддержку которого MS реализовали уже давно.

Но это не мешает им пихать свои DWORD и прочие рудименты во все щели.



0



Модератор

1820 / 917 / 166

Регистрация: 23.07.2018

Сообщений: 3,120

Записей в блоге: 3

02.09.2020, 18:33

19

Zloy_Tip, насколько я понимаю microsoft, это предупреждение компилятора, а не ошибка
https://docs.microsoft.com/en-… el-3-c4996

В учебных упражнениях проще всего не обращать внимание на это сообщение.
Или следовать совету поставщика компилятора:

Цитата
Сообщение от microsoft

Microsoft deprecated some CRT and C++ Standard Library functions and globals because more secure versions are available. Most of the deprecated functions allow unchecked read or write access to buffers. Their misuse can lead to serious security issues. The compiler issues a deprecation warning for these functions, and suggests the preferred function.

To fix this issue, we recommend you use the function or variable safe-version instead. Sometimes you can’t, for portability or backwards compatibility reasons. Carefully verify it’s not possible for a buffer overwrite or overread to occur in your code. Then, you can turn off the warning.

To turn off deprecation warnings for these functions in the CRT, define _CRT_SECURE_NO_WARNINGS.

Добавлено через 13 минут

Цитата
Сообщение от COKPOWEHEU
Посмотреть сообщение

пресекать навязывание псевдо-безопасных функций вроде scanf_s тоже нужно. Потому что поддерживаются они одним-единственным компилятором (подумайте об этом: профессиональные разработчики даже не пытаются их реализовать)

Каких ещё профессиональных разработчиков Вы знаете, кроме Microsoft ?
https://docs.oracle.com/cd/E88… -s-3c.html



0



Вездепух

Эксперт CЭксперт С++

11087 / 6054 / 1651

Регистрация: 18.10.2014

Сообщений: 15,183

02.09.2020, 18:35

20

Цитата
Сообщение от politoto
Посмотреть сообщение

Zloy_Tip, насколько я понимаю microsoft, это предупреждение компилятора, а не ошибка

Тема уже 100500 раз разбиралась здесь. Если в установках проекта включены «SDL checks», то это — именно ошибка, а не предупреждение компилятора. А «SDL checks» в нынешних версиях MSVC включены по умолчанию. Поэтому большинство новичков натыкаются именно на Ошибка C4996, как и процитировано у ТС.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

02.09.2020, 18:35

Помогаю со студенческими работами здесь

Линкер ругается на функцию
// laba7evteev.cpp: определяет можно ли из слов первой строки составить вторую
//

#include…

Ругается на функцию в функции
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;
#include &lt;math.h&gt;
#define A 10…

Компилятор ругается на функцию strncat
#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

long p,x,i,j,k,d,l;
char t,s;…

В main объявить переменную, потом в другой функции ее инициализировать, вызывая функцию scanf
Помогите разобраться с задачей. Нужно в main объявить переменную, потом в другой функции ее…

Антивирус ругается на функцию отправки почты
Антивирус — Kaspersky Internet Security 2012.
ОС — Windows 7 x64.
IDE -…

Почему компилятор ругается на математическую функцию?
#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cmath&gt;

using namespace…

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

Или воспользуйтесь поиском по форуму:

20

I have created a small application to find max number by using user-defined function with parameter. When I run it, it shows this message

Error 1 error C4996: ‘scanf’: This function or variable may be unsafe.
Consider using scanf_s instead. To disable deprecation, use
_CRT_SECURE_NO_WARNINGS. See online help for details.

What do I do to resolve this?

This is my code

#include<stdio.h>

void findtwonumber(void);
void findthreenumber(void);

int main() {
    int n;
    printf("Fine Maximum of two number\n");
    printf("Fine Maximum of three number\n");

    printf("Choose one:");
    scanf("%d", &n);
    if (n == 1)
    {
        findtwonumber();
    }
    else if (n == 2)
    {
        findthreenumber();
    }
    return 0;
}

void findtwonumber(void)
{
    int a, b, max;
    printf("Enter a:");
    scanf("%d", &a);
    printf("Enter b:");
    scanf("%d", &b);
    if (a>b)
        max = a;
    else
        max = b;
    printf("The max is=%d", max);
}

void findthreenumber(void)
{
    int a, b, c, max;
    printf("Enter a:");
    scanf("%d", &a);
    printf("Enter b:");
    scanf("%d", &b);
    printf("Enter c:");
    scanf("%d", &c);
    if (a>b)
        max = a;
    else if (b>c)
        max = b;
    else if (c>a)
        max = c;
    printf("The max is=%d", max);
}

Compile the C language project in VS, if the scanf function is used, the following error will be prompted when compiling:

error C4996:’scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

The reason is that Visual C++ uses more secure run-time library routines. The new Security CRT functions (that is, those with the “_s” suffix), please see

“Security Enhanced Version of CRT Function”

The solution to this problem is given below:

Method 1 : Replace the original old functions with new Security CRT functions.

Method 2 : Use the following methods to block this warning:

  1. Define the following macros in the precompiled header file stdafx.h (note: it must be before including any header files):
#define _CRT_SECURE_NO_DEPRECATE
  1. Or statement
#pragma warning(disable:4996)
  1. Change the preprocessing definition:

    Project -> Properties -> Configuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definition, add:

_CRT_SECURE_NO_DEPRECATE

Method three : Method two does not use the more secure CRT function, which is obviously not a good method worth recommending, but we don’t want to change the function names one by one. Here is an easier method:

Define the following macros in the precompiled header file stdafx.h (also before including any header files):

#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1

When linking, it will automatically replace the old functions with Security CRT functions.

Note: Although this method uses a new function, it cannot eliminate the warning. You have to use method two (-_-) at the same time. In other words, the following two sentences should actually be added to the precompiled header file stdafx.h:

#define _CRT_SECURE_NO_DEPRECATE

#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1

Explanation of the cause of the error:

This kind of warning from Microsoft is mainly because of the functions of the C library. Many functions do not perform parameter detection (including out-of-bounds). Microsoft is worried that using these will cause memory exceptions, so it rewrites the functions of the same function. The function of has carried out parameter detection, and it is safer and more convenient to use these new functions. You don’t need to memorize these rewritten functions specifically, because the compiler will tell you the corresponding safe function when it gives a warning for each function. You can get it by checking the warning message. You can also check MSDN for details when you use it.

Similar Posts:

Время чтения: 5 минут

Visual Studio unsafe error скриншот

Компилятор в Visual Studio сильно отличается от привычных большинству программистов GCC или CLANG, из-за чего при написании кода на C или C++ очень часто возникают неожиданные проблемы в виде ошибки использования стандартных функций, например, scanf, fopen, sscanf и тому подобным. Студия предлагает заменять функции на безопасные (повезёт, если нужно просто добавить _s к функции с ошибкой, но нередко в этих функциях идёт иной набор аргументов, нежели в обычной программе). Если вы не готовы с этим мириться, то этот пост для вас!

Давайте для начала создадим обычный консольный проект в Visual Studio и напишем простенькую программу, которая запрашивает ввод двух чисел, вводит их и затем выводит на экран.

#include "stdafx.h"
#include <stdio.h>

int main() {
	int a, b;

	printf("Enter a: ");
	scanf("%d", &a);

	printf("Enter b: ");
	scanf("%d", &b);

	printf("a: %d, b: %d\n", a, b);
	return 0;
}

Попробовав выполнить сборку проекта, обнаружим те самые ошибки.

Чтобы Visual Studio не тратила ваши нервы, сделаем следующее:

1. Выберем пункт «Проект» в верхнем меню

2. В открывшемся списке щёлкнем по «Свойства название_проекта»

Программа, вводящая два числа и выводящая их

Программа, вводящая два числа и выводящая их

Ошибка компиляции из-за небезопасности функций

Ошибка компиляции из-за небезопасности функций

Проект -> Свойства {навание проекта}

Проект — Свойства {навание проекта}

3. В появившемся окне выберем Свойства конфигурации, C/C++, Препроцессор

4. В строке Определения препроцессора допишем в самый конец строку ;_CRT_SECURE_NO_WARNINGS

5. Нажмём ОК

Свойства конфигурации

Свойства конфигурации

Определения препроцессора

Определения препроцессора

OK

Нажимаем OK

6. Попробуем заново выполнить сборку проекта:

Успешная сборка проекта

Успешная сборка проекта

Ошибки исчезли, сборка прошла успешно и программа прекрасно работает! Теперь можно писать код как обычно, не переживая о необычном поведении Visual Studio!

Фото Перминова Андрея, автора этой статьи

Программист, сооснователь programforyou.ru, в постоянном поиске новых задач и алгоритмов

Языки программирования: Python, C, C++, Pascal, C#, Javascript

Выпускник МГУ им. М.В. Ломоносова

Понравилась статья? Поделить с друзьями:
  • Visual studio just in time debugger ошибка
  • Visual studio показывает несуществующие ошибки
  • Vipnet ошибка при проверке целостности программного обеспечения
  • Visual studio ошибка при создании проекта
  • Visual studio 2008 redistributable files возвратило ошибку vipnet