#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
void gen(int);
void obrab(int);
void out(int);
void enter(int);
char FILENAME[257]= {0};
FILE *filein,*fileout;
int main(int argc, char *argv[])
{
int i,n=0,key=0;
double a,p;
setlocale(LC_ALL,"Russian");
if(argc==1){
printf("Введите имя файла для обработки\n");
scanf("%s", FILENAME);
}
if(argc==2){
strcpy(FILENAME,argv[1]);
}
if (!(filein = fopen(FILENAME, "rb"))){
printf("Файл не существует\n");
system("PAUSE");
}
else {while(fread(&a, sizeof(double), 1, filein))
n++;
fclose(filein);
}
system("PAUSE");
while(key!=52){
system("CLS");
printf("Меню:\n\t1.Создание файла\n\t2.Вывод содержимого файла\n\t3.Обработка файла\n\t4.Выход.\n");
key=getchar();
if (key==49) {
printf("Введите колличество вещественных чисел: ");
do fflush(stdin);
while (!scanf("%d",&n));
enter(n);
}
if (key==50)
out(n);
if (key==51){
if (n>11)
obrab(n);
else {
printf("Файл не нуждается в обработке\n");
system("PAUSE");
}
}
}
return 0;
}
void enter(int n)
{
double a;
int k=n;
if (!(filein = fopen(FILENAME, "wb"))){
printf("Ошибка создания файла\n");
system("PAUSE");
return;
}
system("CLS");
printf("Введите %d чисел: \n", n);
while(n){
do fflush(stdin);
while(!(scanf("%lf",&a)));
fwrite(&a,sizeof(double),1,filein);
n--;
}
fclose(filein);
printf("Файл из %d чисел успешно создан\n", k);
system("PAUSE");
}
void obrab(int n)
{
int i;
FILE *filein, *fileout;
double m;
if (!(filein=fopen(FILENAME, "rb")) || !(fileout=fopen("temp", "wb"))){
printf("Ошибка отрытия файлов\n");
system("PAUSE");
return;
}
for (i=0; i<10;i++){
fread(&m,sizeof(double),1,filein);
fwrite(&m,sizeof(double),1,fileout);
}
fseek(filein, -sizeof(double), SEEK_END);
fread(&m,sizeof(double),1,filein);
fseek(filein, 10*sizeof(double), SEEK_SET);
fwrite(&m,sizeof(double),1,fileout);
for (i=11; i<n;i++){
fread(&m,sizeof(double),1,filein);
fwrite(&m,sizeof(double),1,fileout);
}
if ((fclose(filein))==EOF || (fclose(fileout))==EOF){
printf("Невозможно закрыть файлы\n");
system("PAUSE");
return;
}
if (remove(FILENAME)){
printf("Невозможно удалить исходный файл\n");
system("PAUSE");
return;
}
if (rename("temp",FILENAME)){
printf("Невозможно переименовать .tmp файл\n");
system("PAUSE");
return;
}
printf("Обработка успешно завершена\n");
system("PAUSE");
}
void out(int n)
{
FILE *file;
double a;
if (!(file=fopen(FILENAME, "rb"))){
printf("Ошибка открытия файла\n");
system("PAUSE");
return;
}
system("CLS");
printf("Содержимое файла\n");
while(fread(&a, sizeof(double), 1, file))
printf("%17lf\n", a);
printf("\n");
fclose(file);
system("PAUSE");
}