Ошибка программы: This function or variable may be unsafe - C (СИ)
Формулировка задачи:
Ошибка 1 error 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. *путь*
что она означает?
Решение задачи: «Ошибка программы: This function or variable may be unsafe»
textual
Листинг программы
- #include "stdafx.h"
- #include <stdio.h>
- #include <stdlib.h>
- void build(int*, int);
- void heap(int*, int);
- int main(void)
- {
- FILE *fin;
- int *a, n, i;
- fin = fopen("input.txt", "r");
- fscanf(fin, "%d", &n);
- a = (int*)malloc(n*sizeof(int));
- for (i = 0; i<n; i++)
- fscanf(fin, "%d", &a[i]);
- printf("pervona4alniy vid\n");
- for (i = 0; i<n; i++)
- printf("%d ", a[i]);
- printf("\n");
- build(a, n);
- printf("\n postroenie\n");
- for (i = 0; i<n; i++)
- printf("%d ", a[i]);
- heap(a, n);
- printf("\n kone4niy vid\n");
- for (i = 0; i<n; i++)
- printf("%d ", a[i]);
- printf("\n");
- return 0;
- }
- /* ------------ */
- void build(int *a, int n)
- {
- int i, j, k, temp;
- for (i = 0; i<n / 2; i++)
- {
- j = 2 * i + 1;
- k = i;
- if ((a[j + 1]>a[j]) && (j + 1<n)) j++;
- while ((j>0) && (a[j]>a[k]))
- {
- temp = a[j];
- a[j] = a[k];
- a[k] = temp;
- j = k;
- k = (k - 1) / 2;
- }
- }
- }
- /* -------------*/
- void heap(int *a, int n)
- {
- int nn, temp, i;
- nn = n;
- while (nn>0)
- {
- temp = a[0];
- a[0] = a[nn - 1];
- a[nn - 1] = temp;
- nn--;
- build(a, nn);
- for (i = 0; i<n; i++) printf("%d ", a[i]);
- }
- }
Объяснение кода листинга программы
- В начале программы открывается файл
input.txt
для чтения. - С помощью функции fscanf считывается количество элементов из файла и сохраняется в переменной n.
- Выделяется память под массив a размером n*sizeof(int).
- С помощью цикла for и функции fscanf считываются значения элементов массива a из файла.
- Выводится первый вариант массива a.
- Вызывается функция build для сортировки массива a.
- Выводится второй вариант массива a после сортировки.
- Вызывается функция heap для преобразования массива a в кучу.
- Выводится третий вариант массива a после преобразования в кучу.
- Программа возвращает 0, заканчивая свою работу.
- В функции build происходит сортировка массива a по методу выбором.
- В функции heap происходит преобразование массива a в кучу.
- Переменная nn используется для отслеживания размера массива a в функции heap.
- В цикле while в функции heap происходит перемещение последнего элемента массива a в начало и вызов функции build для рекурсивной сортировки уменьшенного массива.
- Во время выполнения цикла while в функции heap выводится текущий вариант массива a.
- После выхода из цикла while в функции heap, программа продолжает работу с основного цикла.
- В цикле for в основной программе выводятся значения элементов массива a.
- Для организации рекурсивной сортировки в функции build используется временная переменная temp.
- Для организации рекурсивного преобразования в кучу в функции heap используется временная переменная temp.
- Переменная i используется в цикле for в основной программе и в функциях build и heap для отслеживания индексов элементов массива a.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д