Ошибка программы: 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д