Я учусь кодировать и, похоже, у меня проблемы с выполнением учебного примера кода fopen (). Компиляция показывает классическое сообщение «fopen is not secure», но я понимаю, что это не большая проблема, и сообщение с приглашением «увидеть объявление fopen». Это оставляет мне только 3 возможности
- коды неверны (очень маловероятно, поскольку это пример из учебника)
- синтаксис, который я использовал на fopen, неверен
- Iне имеют права на чтение / запись файла
#include <stdio.h>
#include <stdlib.h>
int main(void) {
FILE* in, * out;
in = fopen("in.txt", "w+");
if (in == NULL) {
perror("Cannot open input file");
exit(1);
}
out = fopen("out.txt", "w+");
if (out == NULL) {
fclose(in);
perror("Cannot open output file");
exit(1);
}
fprintf(out, "abc");
fclose(in);
fclose(out);
return 0;
}
, даже меняя «in.txt» на полный путь «C: /Users/Admin/source/repos/Project3/in.txt»тоже не похоже на помощь. Так что я предполагаю, что это проблемы с разрешениями, но я понятия не имею, как еще повысить статус, потому что я уже использую "w +". im на MS Visual Studio 2019, Windows 10.
Сообщение компилятора выглядит так:
1>Source.c
1>C:\Users\Admin\source\repos\Project3\Project3\Source.c(7,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.
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(208): message : see declaration of 'fopen'
1>Done building project "Project3.vcxproj" -- FAILED.
и выглядит как объявление 'fopen', как предлагалось,
_ACRTIMP FILE* __cdecl fopen(
_In_z_ char const* _FileName,
_In_z_ char const* _Mode
);
Я уже решил проблему, но интересно, что вариант _CRT_SECURE_NO_WARNINGS не работал, например,
#define _CRT_SECURE_NO_WARNINGS
или
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
, но у меня сработало следующее
#pragma warning(disable : 4996)
вывод: VS2019 имеет проблемы ... ¯_ (ツ) _ / ¯