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

Исправить ошибку C4996

23.10.2016, 13:30. Показов 18571. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выдаёт ошибку на "fopen", когда меняю её на "fopen_s" выдаёт кучу ошибок в этой строке. Помогите пожалуйста, я в этой сфере новичок, первый курс)
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
#include <stdio.h>
#include <iostream>
#define use_CRT_SECURE_NO_WARNIGNS
int ReadN()
{
    FILE *f; //объявление переменной –указателя на файл
    int n = 0;
    f = fopen("C:\\Input.txt", "rt"); //Открытие файла f для чтения
    fscanf(f, "%d", &n); //Чтение числа n из файла
    fclose(f); //Закрытие файла
    return n;
}
void InputArray(int arr[])
{
    int n = 0;
    FILE *f;
    f = fopen("C:\\Input.txt", "rt");
    fscanf(f, "%d", &n);
    for (int i = 0; i < n; i++)
    {
        fscanf(f, "%d", &arr[i]);
        if (arr[i] % 2 == 0)
            arr[i] *= -1;
    }
    fclose(f);
}
void OutputArray(int arr[], int n)
{
    FILE *f; //объявление переменной –указателя на файл
    f = fopen("C:\\Output.txt", "wt");
    for (int i = 0; i < n; i++)
    {
        fprintf(f, "%5d", arr[i]); //Запись числа n в файл
    }
    fclose(f); //Закрытие файла
}
void main()
{
    int *a; //указатель на массив
    int n = ReadN(); //количество элементов массива
    a = (int*)malloc(n * sizeof(int)); //Выделение памяти под массив
    InputArray(a);
    OutputArray(a, n);
    free(a);
    system("PAUSE");
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.10.2016, 13:30
Ответы с готовыми решениями:

Исправить ошибку "C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead."
Добрый день! Помогите пожалуйста с программой. Программа запускается, но при компиляции выдает ошибку в указанной строке. текст...

Выдаёт ошибку c4996
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; int...

Код говорит ошибку C4996, в чём проблема?
#include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; using namespace std; int main() { ...

3
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
23.10.2016, 13:49
вместо
C++
1
#define use_CRT_SECURE_NO_WARNIGNS
напишите
C++
1
#pragma warning(disable : 4996)
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
23.10.2016, 13:56
Цитата Сообщение от Impulse703 Посмотреть сообщение
#define use_CRT_SECURE_NO_WARNIGNS
C++
1
#define _CRT_SECURE_NO_WARNIGNS
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
23.10.2016, 13:59
Цитата Сообщение от Impulse703 Посмотреть сообщение
на "fopen"
warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
это - предупреждение, а не ошибка.
компилятор предупредил:
вы используйте не безопасные версии функций.

пример:

запускаю на онлайн компиляторе:
http://rextester.com/KCKWZ85370


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
// приглушил предупреждение компилятора
#define _CRT_SECURE_NO_WARNINGS
 
#include <stdio.h>
#include <iostream>
 
int ReadN()
{
    FILE *f; //объявление переменной –указателя на файл
    int n = 0;
    f = fopen("C:\\Input.txt", "rt"); //Открытие файла f для чтения
    fscanf(f, "%d", &n); //Чтение числа n из файла
    fclose(f); //Закрытие файла
    return n;
}
void InputArray(int arr[])
{
    int n = 0;
    FILE *f;
    f = fopen("C:\\Input.txt", "rt");
    fscanf(f, "%d", &n);
    for (int i = 0; i < n; i++)
    {
        fscanf(f, "%d", &arr[i]);
        if (arr[i] % 2 == 0)
            arr[i] *= -1;
    }
    fclose(f);
}
void OutputArray(int arr[], int n)
{
    FILE *f; //объявление переменной –указателя на файл
    f = fopen("C:\\Output.txt", "wt");
    for (int i = 0; i < n; i++)
    {
        fprintf(f, "%5d", arr[i]); //Запись числа n в файл
    }
    fclose(f); //Закрытие файла
}
void main()
{
    int *a; //указатель на массив
    int n = ReadN(); //количество элементов массива
    a = (int*)malloc(n * sizeof(int)); //Выделение памяти под массив
    InputArray(a);
    OutputArray(a, n);
    free(a);
    system("PAUSE");
}
Error(s):
Process exit code is not 0: -1073740791
что произошло?
на онлайн компиляторе нет никаких "C:\\Input.txt" и тп.
но у вас в коде нет нигде никаких проверок:
смогли открыть, не смогли.

рассмотрим функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int ReadN()
{
    FILE *f; //объявление переменной –указателя на файл
    int n = 0;
    f = fopen("C:\\Input.txt", "rt"); // <--- не смогли открыть
 
    fscanf(f, "%d", &n); // <--- у нас файл не открылся
      // а небезопасной функции пофигу
      // что указатель f - вообще не валиден
 
    fclose(f); //Закрытие файла
    return n;
}
дальше происходит попытка чтения по невалидному адресу,
срабатывает дебаг-защита памяти рантайма с++,
или же операционная система решает:
"процесс взбесился. нужно его грохнуть от греха подальше",
и посылает процессу живительный сигнал эвтаназии.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2016, 13:59
Помогаю со студенческими работами здесь

Компилятор выдаёт ошибку error C4996: 'strcpy': This function or variable may be unsafe
Добрый день! Помогите , пожалуйста, узнать в чём проблема. Код взят из книги. Мне он не очень нравится, были мысли что где-то есть...

Выдает ошибку: error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead
Уважаемые форумчане! У меня не работает программа. Все написано &quot;вроде&quot; правильно. Выдает ошибку: error C4996: 'strcpy': This function...

Подскажите как исправить ошибку. прога ломается на 79 строке. а ошибку не выдает
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int chisla(int a,int b) { ...

Как исправить ошибку: формат теста исправить нельзя, только текст программы
class AmericanDate: def __init__(self, y, m, d): self.get_year = str(y) self.get_month = str(m//10)+str(m%10) ...

В коде выдает ошибку на 15 строчке. Мне надо исправить эту ошибку
procedure TForm1.BOkClick(Sender: TObject); var e1, e2: double; begin Label1.Caption := ''; if not...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru