error C2660: fopen_s: функция не принимает * аргументов
Код:
#include <iostream>
#include <stdio.h>
double dt;
double room_t;
double tmax;
double t;
double t0;
double T;
double T0;
double r;
int n;
FILE * f;
void init_func (void)
{
n=15;
}
void init_r (void) {
double line;
f=fopen_s("in.txt","r"); //считываем данные, т.к. при переоткрытии данных программа будет считать с самого начала снова
fscanf(f, "%lf", &t0); //начальное время
fscanf(f, "%lf", &room_t); //температура комнаты
fscanf(f, "%lf", &dt); //шаг по времени
fscanf(f, "%lf", &tmax); //длительность эксперимента
fscanf(f, "%lf", &T0); //начальная температура тела
for (int i=2; i <= 15; i++) { //обработываем данные об остывании
fscanf(f, "%lf", &line);
r = r + (-1)*((line-T0)/((i-t0)*(line-room_t)));
}
r=r/15;
fprintf(f, "%.3f \n", r); //выводим коэффициент остывания в файл
printf("%.3f \n", r); //выводим коэффициент остывания в консоль
fclose(f); //закрываем файл
}
int main()
{
init_func (); //Инициализируем начальные значения
init_r(); //Считываем данные из файла
T=T0;
t=t0;
FILE* f=fopen_s ("out.txt","w"); //открываем файл для записи
fprintf (f, "%5.3f\n", r);
double Change_T = 0.0; //изменение функции
for (int i=1; i <= n+1; i++)
{
Change_T=(-1)*(r*(T-room_t)*(dt)); //считаем
//Change_T=room_t+(T-room_t)*pow(e,(-1*(r*t)));
//вывод в файл и на консоль
fprintf(f, "%02d %4.2f %4.2f %4.2f\n",i, t, T, T+Change_T);
printf("%02d %4.2f %4.2f %4.2f\n",i, t, T, T+Change_T);
T=T+Change_T;
t=t+dt;
}
fclose (f);
system("pause");
}
#include <stdio.h>
double dt;
double room_t;
double tmax;
double t;
double t0;
double T;
double T0;
double r;
int n;
FILE * f;
void init_func (void)
{
n=15;
}
void init_r (void) {
double line;
f=fopen_s("in.txt","r"); //считываем данные, т.к. при переоткрытии данных программа будет считать с самого начала снова
fscanf(f, "%lf", &t0); //начальное время
fscanf(f, "%lf", &room_t); //температура комнаты
fscanf(f, "%lf", &dt); //шаг по времени
fscanf(f, "%lf", &tmax); //длительность эксперимента
fscanf(f, "%lf", &T0); //начальная температура тела
for (int i=2; i <= 15; i++) { //обработываем данные об остывании
fscanf(f, "%lf", &line);
r = r + (-1)*((line-T0)/((i-t0)*(line-room_t)));
}
r=r/15;
fprintf(f, "%.3f \n", r); //выводим коэффициент остывания в файл
printf("%.3f \n", r); //выводим коэффициент остывания в консоль
fclose(f); //закрываем файл
}
int main()
{
init_func (); //Инициализируем начальные значения
init_r(); //Считываем данные из файла
T=T0;
t=t0;
FILE* f=fopen_s ("out.txt","w"); //открываем файл для записи
fprintf (f, "%5.3f\n", r);
double Change_T = 0.0; //изменение функции
for (int i=1; i <= n+1; i++)
{
Change_T=(-1)*(r*(T-room_t)*(dt)); //считаем
//Change_T=room_t+(T-room_t)*pow(e,(-1*(r*t)));
//вывод в файл и на консоль
fprintf(f, "%02d %4.2f %4.2f %4.2f\n",i, t, T, T+Change_T);
printf("%02d %4.2f %4.2f %4.2f\n",i, t, T, T+Change_T);
T=T+Change_T;
t=t+dt;
}
fclose (f);
system("pause");
}
1>d:\documents - roman\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\исходный код1.cpp(20): error C2660: fopen_s: функция не принимает 2 аргументов
1>d:\documents - roman\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\исходный код1.cpp(42): error C2660: fopen_s: функция не принимает 2 аргументов
1>d:\documents - roman\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\исходный код1.cpp(42): error C2660: fopen_s: функция не принимает 2 аргументов
Подскажите пожалуйста, в чем проблема, я вообще в C++ дуб дубом, в интернете не нашел решения.
Спасибо.
Ноль эта ф-ция возвращает, если все хорошо. Обычно пишут так:
if(fopen_s(&f, "in.txt","r") ==0){//что-то делаем} иначе обрабатываем ошибку.
Ей надо 3 аргумента -
изменил
Код:
20. f=fopen_s(&f, "in.txt","r")
42. FILE* f=fopen_s (&f, "out.txt","w")
42. FILE* f=fopen_s (&f, "out.txt","w")
1>d:\documents - roman\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\исходный код1.cpp(20): error C2440: =: невозможно преобразовать "errno_t" в "FILE *"
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>d:\documents - roman\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\исходный код1.cpp(42): error C2440: инициализация: невозможно преобразовать "errno_t" в "FILE *"
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>d:\documents - roman\documents\visual studio 2012\projects\consoleapplication2\consoleapplication2\исходный код1.cpp(42): error C2440: инициализация: невозможно преобразовать "errno_t" в "FILE *"
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
что не так? точнее как это поправить?
Цитата: sadovoya
f вы и так предаете в параметрах. А возвращаемое значение код ошибки. Пишите просто fopen_s(&f, "in.txt","r") без f=...
Ноль эта ф-ция возвращает, если все хорошо. Обычно пишут так:
if(fopen_s(&f, "in.txt","r") ==0){//что-то делаем} иначе обрабатываем ошибку.
Ноль эта ф-ция возвращает, если все хорошо. Обычно пишут так:
if(fopen_s(&f, "in.txt","r") ==0){//что-то делаем} иначе обрабатываем ошибку.
спасибо огромное