• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Вопрос: Файловый ввод/вывод FILE *ptr

  • Автор темы Newbik
  • Дата начала
N

Newbik

Помогите плз. Диплом горит! Не работает! Почему не пойму. В чем ошибка?

C++:
void __fastcall TForm1::Button8Click(TObject *Sender)
{
FILE *f0, *f1, *f2;
char file[256], ch[16];
int Day0, Year0, Year1, Day1;
float max, min;
f2=fopen("max-minfrqF2.dat", "wt");
f0=fopen("D:\\Diplom\\6kyrs\\maxfrqF2.dat", "r");
fscanf(f0, "%d %d %f", &Year0, &Day0, &max);
f1=fopen("D:\\Diplom\\6kyrs\\minfrqF2.dat", "r");
fscanf(f1, "%d %d %f", &Year1, &Day1, &min);
while (fscanf(f0, "%d %d %f", &Year0, &Day0, &max)==3 && fscanf(f0, "%d %d %f", &Year1, &Day1, &min)==3)
{
if (Year0==Year1 && Day0==Day1) { fprintf(f2,"%4d %2d %6.1f\n", Year1, Day1, max-min); }
else { break; }
}
fclose(f0);
fclose(f1);
fclose(f2);
}
 
D

DarkKnight

2 Newbik : Автор, тема более не актуальна???
C++:
	FILE *f0, *f1, *f2;
char file[256], ch[16];
int Day0, Year0, Year1, Day1;
float max, min;
f2=fopen("max-minfrqF2.dat", "wt"); //Файла на запись в текстовом(символьном) режиме
f0=fopen("D:\\Diplom\\6kyrs\\maxfrqF2.dat", "r"); //Чтение файла
fscanf(f0, "%d %d %f", &Year0, &Day0, &max); //Прочитаем первую запись (вы ее в отдельные переменные запихали), хотя можно было сравнивать первы
//f1=fopen("D:\\Diplom\\6kyrs\\minfrqF2.dat", "r"); //Это лишнее зачем же файл открывать по 10 раз
//fscanf(f1, "%d %d %f", &Year1, &Day1, &min); //А это я как понимаю что бы первую запись пропустить совсем как то все непонятно
while (!feof(f0)) //Пока не достигнут конец файла
{
fscanf(f0, "%d %d %f %d %d %f",&Year0, &Day0, &max,&Year1, &Day1, &min);
if (Year0==Year1 && Day0==Day1) 
{ 
//while (fscanf(f0, "%d %d %f", &Year0, &Day0, &max)==3 && fscanf(f0, "%d %d %f", &Year1, &Day1, &min)==3) //Вот это я вообще без комментариев оставлю
//сделать нужно т.к. выше 
fprintf(f2,"%4d %2d %6.1f\n", Year1, Day1, max-min); // Вот и все
}

}

fclose(f0);
fclose(f2);
 
N

Newbik

Спасибо! Тема уже не актуальна. Да я не по 10 раз открываю одно и тоже, там два разных файла (maxfrqF2.dat ; minfrqF2.dat)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!