C/C++

Нужно перенести данный с одного .txt файла в другой(пустой), но с моим вариантом выходит ошибка fopen(небезопасный путь)

Очень тупая задача
Не понимаю почему не работает


#include<stdio.h>
int main()
{
FILE* file1;
FILE* file2;
file1 = fopen("D:\\cbc\\pppppppp\\666.txt", "r");
file2 = fopen("D:\\cbc\\pppppppp\\777.txt", "w");
char boom[504];
while (!feof(file1))
{
fgets(boom, sizeof(boom), file1);
fputs(boom, file2);
}
fclose(file1);
fclose(file2);
return 0;
}


При компилировании выходит ошибка fopen': This function or variable may be unsafe…
Попытки ковыряться в параметрах проекта(_CRT_SECURE_NO_WARNINGS) и замена на _s не помогли.
Помогите пожалуйста, за прогу вообще не шарю, ничего не понимаю..


Прим. Microsoft Visual C++ ; 504 - количество символов в изначальном файле
"D:/cbc/pppppppp/xxx.txt"
вместо \\ используйте /
удостоверьтесь что путь к файлам указан правильно.
Используйте проверку открытости файла
if (!file1) выдать сообщение что файл не найден
АА
Александр Авраменко
51 416
Лучший ответ
В начало проекта нужно добавить строку
 #define _CRT_SECURE_NO_WARNINGS 
Ну и хоть какую-то обработку ошибок:
 #define _CRT_SECURE_NO_WARNINGS 
#include

int main()
{
FILE* file1;
FILE* file2;
file1 = fopen("D:\\cbc\\pppppppp\\666.txt", "r");
file2 = fopen("D:\\cbc\\pppppppp\\777.txt", "w");

if (!file1 || !file2) {
return -1;
}

char boom[504];
while (!feof(file1))
{
fgets(boom, sizeof(boom), file1);
fputs(boom, file2);
}
fclose(file1);
fclose(file2);
return 0;
}
Да, кстати, это уже не Сишный код, хотя студией будет собираться и в файле с расширением .c. В языке Си объявлять переменные можно только в начале операторного блока
 FILE* file1; 
FILE* file2;
file1 = fopen("D:\\cbc\\pppppppp\\666.txt", "r");
file2 = fopen("D:\\cbc\\pppppppp\\777.txt", "w");
char boom[504]; // Ошибка!
Андрей Тен
Андрей Тен
30 155
ну если 504, то ты лишнюю цифру одну указал )
Или не лишнюю.
В программировании часто первая цифра 0 идет.
но там еще по моему доп 1 символ нужен для завершения массива что ли.
В общем может я что то и путаю.

Загуглил, написано что ошибку выдает если считает функции не безопасными.
Попробуй char boom [1000] врубить.
Но в принципе не поможет наверно.
Функции нужно другие использовать.

errno_t fopen_s(
FILE** pFile,
const char *filename,
const char *mode
);
errno_t _wfopen_s(
FILE** pFile,
const wchar_t *filename,
const wchar_t *mode
);
Прощу обратить внимание на :
fopen_s
_wfopen_s
А дальше гугли имена этих функций.
Или как то безопасные функции и так далее, придумай что ни будь.

А то что пример не работает ну найди другой пример.
Таких примеров в инете ВАЛОМ !!!
Поищи в инете если сам не сможешь сделать.
Поищи пример с open_s и так далее.
Андрей Тюков
Андрей Тюков
2 780