Ошибка программы: 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
Листинг программы
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6.  
  7. void build(int*, int);
  8. void heap(int*, int);
  9. int main(void)
  10. {
  11.     FILE *fin;
  12.     int *a, n, i;
  13.  
  14.     fin = fopen("input.txt", "r");
  15.  
  16.     fscanf(fin, "%d", &n);
  17.     a = (int*)malloc(n*sizeof(int));
  18.     for (i = 0; i<n; i++)
  19.         fscanf(fin, "%d", &a[i]);
  20.     printf("pervona4alniy vid\n");
  21.     for (i = 0; i<n; i++)
  22.         printf("%d ", a[i]);
  23.     printf("\n");
  24.     build(a, n);
  25.     printf("\n postroenie\n");
  26.     for (i = 0; i<n; i++)
  27.         printf("%d ", a[i]);
  28.     heap(a, n);
  29.     printf("\n kone4niy vid\n");
  30.     for (i = 0; i<n; i++)
  31.         printf("%d ", a[i]);
  32.     printf("\n");
  33.     return 0;
  34. }
  35. /* ------------ */
  36. void build(int *a, int n)
  37. {
  38.     int i, j, k, temp;
  39.     for (i = 0; i<n / 2; i++)
  40.     {
  41.         j = 2 * i + 1;
  42.         k = i;
  43.         if ((a[j + 1]>a[j]) && (j + 1<n)) j++;
  44.         while ((j>0) && (a[j]>a[k]))
  45.         {
  46.             temp = a[j];
  47.             a[j] = a[k];
  48.             a[k] = temp;
  49.             j = k;
  50.             k = (k - 1) / 2;
  51.         }
  52.     }
  53. }
  54. /* -------------*/
  55. void heap(int *a, int n)
  56. {
  57.     int nn, temp, i;
  58.     nn = n;
  59.     while (nn>0)
  60.     {
  61.         temp = a[0];
  62.         a[0] = a[nn - 1];
  63.         a[nn - 1] = temp;
  64.         nn--;
  65.         build(a, nn);
  66.  
  67.         for (i = 0; i<n; i++) printf("%d ", a[i]);
  68.     }
  69. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы