Исправить множественные ошибки типа "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для чтения чисел из консоли, но он может вызвать ошибку при неправильном формате данных.