Ошибка программы: 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]);
    }
}

Объяснение кода листинга программы

  1. В начале программы открывается файл input.txt для чтения.
  2. С помощью функции fscanf считывается количество элементов из файла и сохраняется в переменной n.
  3. Выделяется память под массив a размером n*sizeof(int).
  4. С помощью цикла for и функции fscanf считываются значения элементов массива a из файла.
  5. Выводится первый вариант массива a.
  6. Вызывается функция build для сортировки массива a.
  7. Выводится второй вариант массива a после сортировки.
  8. Вызывается функция heap для преобразования массива a в кучу.
  9. Выводится третий вариант массива a после преобразования в кучу.
  10. Программа возвращает 0, заканчивая свою работу.
  11. В функции build происходит сортировка массива a по методу выбором.
  12. В функции heap происходит преобразование массива a в кучу.
  13. Переменная nn используется для отслеживания размера массива a в функции heap.
  14. В цикле while в функции heap происходит перемещение последнего элемента массива a в начало и вызов функции build для рекурсивной сортировки уменьшенного массива.
  15. Во время выполнения цикла while в функции heap выводится текущий вариант массива a.
  16. После выхода из цикла while в функции heap, программа продолжает работу с основного цикла.
  17. В цикле for в основной программе выводятся значения элементов массива a.
  18. Для организации рекурсивной сортировки в функции build используется временная переменная temp.
  19. Для организации рекурсивного преобразования в кучу в функции heap используется временная переменная temp.
  20. Переменная i используется в цикле for в основной программе и в функциях build и heap для отслеживания индексов элементов массива a.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.429 из 5
Похожие ответы