Преподаватель: Бахтизин. Задание: Сформировать базу данных результатов экзамена студентов. Разработать программу, которая удаляет соответствующие записи из файла тех, чья оценка меньше 5 и помещает их в другой файл. Листинг программы. #include <stdio.h>//библиотека стандартного ввода и вывода #include <conio.h>//консольный ввод-вывод #include <stdlib.h>//функции, занимающиеся выделением памяти, контроль процесса выполнения программы, преобразования типов и другие #include <locale.h>//нформациюя о текущей кодировке #include <string.h>//работа со строками
//Проверка, есть ли файл, если нет, то выйти из программы if((fid_source=fopen(str_source,"r+t"))==NULL)//открыть файл для записи и чтения, содержимое файла не теряется { puts("Cannot open the file"); puts("Press any key"); return 1; }
start=ftell(fid_source); puts("Search for the students with mark not eq 5..."); while((fscanf(fid_source,"%s", st))!=EOF)//прочитать строку из файла fid в st до тех пор, пока не будет достигнут конец файла { finish=ftell(fid_source); mark=atoi(st); if(mark) { if (mark!=5) { if(start==0) fseek(fid_source,start,SEEK_SET); else fseek(fid_source,start+1,SEEK_SET); fgets(st_wr,sizeof(st_wr),fid_source); if((fid_dest=fopen(str_dest,"a+t"))==NULL) //открыть файл для записи и чтения в конец файла, содержимое файла не теряется { puts("Cannot open the file"); puts("Press any key"); return 1; } fputs(st_wr,fid_dest); fclose(fid_dest);
// fseek(fid_source,finish+1,SEEK_SET); printf("The length of input string is: %d\n", strlen(st_wr)); printf("What we read from file: %s\n",st_wr); printf("The start position is: %d \t and The finish position is: %d \n", start, finish); printf("What we will write down: %s\n",st_wr); }
else {
if((fid_tmp=fopen(tmp_file,"a+t"))==NULL)//открыть файл для записи и чтения в конец файла, содержимое файла не теряется { puts("Cannot open the file"); puts("Press any key"); return 1; }
fclose(fid_source);//закрыть фай if((fid_source=fopen(str_source,"wt"))==NULL)//открыть файл для записи и чтения, содержимое файла теряется { puts("Cannot open the file"); puts("Press any key"); return 1; }
if((fid_tmp=fopen(tmp_file,"rt"))==NULL)//открыть файл для чтения { puts("Cannot open the file"); puts("Press any key"); return 1; }
while(!feof(fid_tmp))//до тех пор, пока не будет достигнут конец файла { fgets(st_wr,50,fid_tmp);//читаем строку из временного файла fputs(st_wr,fid_source);//записываем строку в файл }