Исправить множественные ошибки типа "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(); }
Объяснение кода листинга программы
- В функции
FileOpen
происходит открытие файла на запись, но в коде есть комментарий, где используется открытие файла на чтение. - В функции
FileRead
используется функцияfscanf
для чтения чисел из файла, но она может вызвать ошибку при неправильном формате данных. - В функции
FileSave
используется функцияsrand
для инициализации генератора случайных чисел, но она должна быть вызвана только один раз в начале программы. - В функции
FileSave
используется оператор%
для генерации случайного числа от 0 до 19, но это может привести к нежелательным значениям. - В функции
FileSave
используется функцияfprintf
для записи чисел в файл, но она может вызвать ошибку при неправильном формате данных. - В функции
FileClose
используется функцияfclose
для закрытия файла, но она может вызвать ошибку при неправильном использовании. - В функции
main
используется операторscanf
для чтения строк из консоли, но он может вызвать ошибку при неправильном формате данных. - В функции
main
используется функцияFileOpen
для открытия файлов, но она может вызвать ошибку при неправильном имени файла или отсутствии прав на запись/чтение. - В функции
main
используется функцияFileRead
для чтения чисел из файла, но она может вызвать ошибку при неправильном формате данных. - В функции
main
используется функцияFileSave
для записи чисел в файл, но она может вызвать ошибку при неправильном формате данных. - В функции
main
используется функцияFileClose
для закрытия файлов, но она может вызвать ошибку при неправильном использовании. - В функции
main
используется функцияgetch
для получения ввода от пользователя, но она может вызвать ошибку при неправильном использовании. - В функции
main
используется операторprintf
для вывода строки на консоль, но он может вызвать ошибку при неправильном формате данных. - В функции
main
используется оператор%
для форматирования вывода строки на консоль, но он может вызвать ошибку при неправильном использовании. - В функции
main
используется операторscanf
для чтения чисел из консоли, но он может вызвать ошибку при неправильном формате данных. - В функции
main
используется операторprintf
для вывода числа на консоль, но он может вызвать ошибку при неправильном формате данных. - В функции
main
используется операторgetch
для получения ввода от пользователя, но он может вызвать ошибку при неправильном использовании. - В функции
main
используется операторprintf
для вывода строки на консоль, но он может вызвать ошибку при неправильном формате данных. - В функции
main
используется операторprintf
для вывода числа на консоль, но он может вызвать ошибку при неправильном формате данных. - В функции
main
используется операторscanf
для чтения чисел из консоли, но он может вызвать ошибку при неправильном формате данных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д