Исправить множественные ошибки типа "This function or variable may be unsafe" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

помогите исправить апшибки
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale>
 
FILE* FileOpen(char* path)
{
    /*FILE* PFile;
    PFile = fopen(path, "w");*/
    return(fopen(path, "w"));
}
 
void FileRead(FILE* PFile, int* mas, int count)
{
    int i;
    for (i = 0; i < count; i++)
        fscanf(PFile, "%d", &mas[i]);
}
 
void FileSave(FILE* PFile, int* mas, int count)
{
    int i, s;
    s = 0;
    for (i = 0; i < count; i++)
    {
        srand(time(NULL));
        if (mas[i] = 0) mas[i] = rand()%20;
        fprintf(PFile, "%d", mas[i]);
        if (i % 2 == 0) s = s + mas[i]; else s = s - mas[i];
    }
    fprintf(PFile, "S = %d", s);
}
 
void FileClose(FILE* PFile)
{
    fclose(PFile);
}
 
void main()
{
    setlocale(LC_ALL, "RUSSIAN");
    const int n = 20;
    int* a[n], s, i;
    FILE* InFile, OutFile;
    char* InFileName, OutFileName;
    printf("'IN' file name");
    scanf("%d", &InFileName);
    printf("'OUT' file name");
    scanf("%d", &OutFileName);
    InFile = FileOpen(InFileName);
    OutFile = FileOpen(OutFileName);
    FileRead(InFile, a[n], n);
    FileSave(OutFile, a[n], n);
    FileClose(InFile);
    FileClose(OutFile);
    getch();
}
1>------ Построение начато: проект: lab10_a, Конфигурация: Debug Win32 ------ 1>Компиляция... 1>lab10_a.cpp 1>c:\documents and settings\user\мои документы\visual studio 2008\projects\lab10\lab10_a\lab10_a\lab10_a.cpp(10) : 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. 1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237): см. объявление 'fopen' 1>c:\documents and settings\user\мои документы\visual studio 2008\projects\lab10\lab10_a\lab10_a\lab10_a.cpp(17) : warning C4996: 'fscanf': This function or variable may be unsafe. Consider using fscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(256): см. объявление 'fscanf' 1>c:\documents and settings\user\мои документы\visual studio 2008\projects\lab10\lab10_a\lab10_a\lab10_a.cpp(26) : warning C4244: аргумент: преобразование 'time_t' в 'unsigned int', возможна потеря данных 1>c:\documents and settings\user\мои документы\visual studio 2008\projects\lab10\lab10_a\lab10_a\lab10_a.cpp(47) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306): см. объявление 'scanf' 1>c:\documents and settings\user\мои документы\visual studio 2008\projects\lab10\lab10_a\lab10_a\lab10_a.cpp(49) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> d:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306): см. объявление 'scanf' 1>c:\documents and settings\user\мои документы\visual studio 2008\projects\lab10\lab10_a\lab10_a\lab10_a.cpp(51) : error C2664: FileOpen: невозможно преобразовать параметр 1 из 'char' в 'char *' 1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции 1>c:\documents and settings\user\мои документы\visual studio 2008\projects\lab10\lab10_a\lab10_a\lab10_a.cpp(53) : error C2664: FileSave: невозможно преобразовать параметр 1 из 'FILE' в 'FILE *' 1> Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен 1>c:\documents and settings\user\мои документы\visual studio 2008\projects\lab10\lab10_a\lab10_a\lab10_a.cpp(55) : error C2664: FileClose: невозможно преобразовать параметр 1 из 'FILE' в 'FILE *' 1> Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен 1>Журнал построения был сохранен в "file://c:\Documents and Settings\user\Мои документы\Visual Studio 2008\Projects\lab10\lab10_a\lab10_a\Debug\BuildLog.htm" 1>lab10_a - ошибок 3, предупреждений 5 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Решение задачи: «Исправить множественные ошибки типа "This function or variable may be unsafe"»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale>
FILE* FileOpen(char* path)
{
    /*FILE* PFile;
    PFile = fopen(path, "w");*/
    return(fopen(path, "w"));
}
 
void FileRead(FILE* PFile, int* mas, int count)
{
    int i;
    for (i = 0; i < count; i++)
        fscanf(PFile, "%d", &mas[i]);
}
 
void FileSave(FILE* PFile, int* mas, int count)
{
    int i, s;
    s = 0;
    for (i = 0; i < count; i++)
    {
        srand(time(NULL));
        if (mas[i] == 0) mas[i] = rand()%20;
        fprintf(PFile, "%d", mas[i]);
        if (i % 2 == 0) s = s + mas[i]; else s = s - mas[i];
    }
    fprintf(PFile, "S = %d", s);
}
 
void FileClose(FILE* PFile)
{
    fclose(PFile);
}
 
void main()
{
    const int n = 20;
    int *a[20], s, i;
    FILE *InFile, *OutFile;
    char InFileName[30], OutFileName[30];
    setlocale(LC_ALL, "RUSSIAN");
    printf("'IN' file name: ");
    scanf("%s", InFileName);
    printf("'OUT' file name: ");
    scanf("%s", OutFileName);
    InFile = FileOpen(InFileName);
    OutFile = FileOpen(OutFileName);
    FileRead(InFile, a[n], n);
    FileSave(OutFile, a[n], n);
    FileClose(InFile);
    FileClose(OutFile);
    getch();
}

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

  1. В функции FileOpen происходит открытие файла на запись, но в коде есть комментарий, где используется открытие файла на чтение.
  2. В функции FileRead используется функция fscanf для чтения чисел из файла, но она может вызвать ошибку при неправильном формате данных.
  3. В функции FileSave используется функция srand для инициализации генератора случайных чисел, но она должна быть вызвана только один раз в начале программы.
  4. В функции FileSave используется оператор % для генерации случайного числа от 0 до 19, но это может привести к нежелательным значениям.
  5. В функции FileSave используется функция fprintf для записи чисел в файл, но она может вызвать ошибку при неправильном формате данных.
  6. В функции FileClose используется функция fclose для закрытия файла, но она может вызвать ошибку при неправильном использовании.
  7. В функции main используется оператор scanf для чтения строк из консоли, но он может вызвать ошибку при неправильном формате данных.
  8. В функции main используется функция FileOpen для открытия файлов, но она может вызвать ошибку при неправильном имени файла или отсутствии прав на запись/чтение.
  9. В функции main используется функция FileRead для чтения чисел из файла, но она может вызвать ошибку при неправильном формате данных.
  10. В функции main используется функция FileSave для записи чисел в файл, но она может вызвать ошибку при неправильном формате данных.
  11. В функции main используется функция FileClose для закрытия файлов, но она может вызвать ошибку при неправильном использовании.
  12. В функции main используется функция getch для получения ввода от пользователя, но она может вызвать ошибку при неправильном использовании.
  13. В функции main используется оператор printf для вывода строки на консоль, но он может вызвать ошибку при неправильном формате данных.
  14. В функции main используется оператор % для форматирования вывода строки на консоль, но он может вызвать ошибку при неправильном использовании.
  15. В функции main используется оператор scanf для чтения чисел из консоли, но он может вызвать ошибку при неправильном формате данных.
  16. В функции main используется оператор printf для вывода числа на консоль, но он может вызвать ошибку при неправильном формате данных.
  17. В функции main используется оператор getch для получения ввода от пользователя, но он может вызвать ошибку при неправильном использовании.
  18. В функции main используется оператор printf для вывода строки на консоль, но он может вызвать ошибку при неправильном формате данных.
  19. В функции main используется оператор printf для вывода числа на консоль, но он может вызвать ошибку при неправильном формате данных.
  20. В функции main используется оператор scanf для чтения чисел из консоли, но он может вызвать ошибку при неправильном формате данных.

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


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

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

9   голосов , оценка 3.667 из 5