Организация работы с файлами

Страницы работы

Содержание работы

Министерство образования и науки РФ

ГОУВПО «Комсомольский-на-Амуре государственный технический университет»

Кафедра МОП ЭВМ

Лабораторная работа №7

«Организация работы с файлами»

                                                               Выполнил: Рогозин В.А.

Группа: 4ВС-1

Проверил: Могильников Е.В.

Комсомольск-на-Амуре

2006

Задание: В командной строке задается имя входного файла и целое число N. Распечатать последние N строк указанного файла.

Алгоритм:

С командной строки указывается имя файла и число строй с конца которые нужно вывести на экран, если файл не найден выдаётся предупреждение, иначе идёт цикл с посимвольным считыванием файла с занесением его в структуру, если число элементов структуры превышает размер заданного количества строк, то первый элемент удаляется из структуры, цикл продолжается до конца файла

Блок-схема:

 


Листинг:

#include<iostream.h>

#include<conio.h>

#include<stdlib.h>

#include<string.h>

#include<stdio.h>

FILE *in;

struct sm

{

char zn[300];

sm *next;

}*perv,*tec,*posl,*temp;

void readfile(int N,char *str)

{

char c;

if(fopen(str,"r")==NULL)

{

cout<<"Неверно указан путь к файлу";

getch();

exit(1);

}

in=fopen(str,"r");

clrscr();

int i=0, k=0,v,d;

do

{

tec=(sm*)calloc(1,sizeof(sm));

v=0, d=0;

while(v==0)

{

fscanf(in,"%c",&c);

if(c=='\n') v=1;

(*tec).zn[d]=c; //посимвольная запись строки в массив

d++;

}

if(i==0)

{ perv=tec;

posl=perv;

i++;     }

else

{

temp=tec;

tec=posl;

posl=temp;

tec->next=posl;

i++;

}

posl->next=NULL;

k++;

if(k==(N+2))

{

perv=perv->next;

k--;

}

}while(feof(in)==0);

temp=perv;

while(temp->next!=NULL) //вывод на экран

{

cout<<(*temp).zn;

temp=temp->next;

}

cout<<(*temp).zn;

fclose(in);

}

void main()

{

clrscr();

char *ptr;

int N;

cout<<"Введите путь к файлу: ";

cin>>ptr;

cout<<"Введите кол-во строк: ";

cin>>N;

perv=(sm*)calloc(1,sizeof(sm));

posl=(sm*)calloc(1,sizeof(sm));

temp=(sm*)calloc(1,sizeof(sm));

posl=perv;

perv->next=NULL;

posl->next=NULL;

readfile(N,ptr);

getch();

}

Литература:

Не использовалась

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
195 Kb
Скачали:
0