Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_2_6_Работа_с_файлами.doc
Скачиваний:
0
Добавлен:
15.11.2018
Размер:
237.06 Кб
Скачать

Внешние устройства, используемые в качестве файлов

Связь с внешними устройствами в языке Turbo Pascal осуществляется также через файловые переменные.

В Turbo Pascal существует два типа внешних устройств. Устройства операционной системы и текстовые устройства.

Устройства операционной системы, с которыми осуществляется обмен информацией, могут быть описаны как файлы со стандартными именами. Эти имена следующие:

CON - консоль (как правило, дисплей). С этим устройством стандартно связаны файловые переменные Input и Output.

PRN - печатающее устройство.

COM1, COM2 - имена двух портов.

AUX - синоним COM1.

NUL - фиктивное внешнее устройство.

К текстовым устройствам относятся устройства, не поддерживаемые операционной системой или имеющие другие способы обращения.

2. Тексты программ на языке СИ.

#include<stdio.h>

/*Пример1 открытия файла "test" для чтения и записи без проверки

наличия ошибки при вызове функции fopen()*/

void main()

{

FILE *fp;

fp=fopen("test","wt");

fclose(fp);

return;

}

-----------------------------------------------------------------------------

#include<stdio.h>

/*Пример2 открытия файла "test" для чтения и записи с проверкой

наличия ошибки при вызове функции fopen()*/

int main()

{

FILE *fp;

if((fp=fopen("test","wt"))==NULL)

{

/* При ошибке открытия файла "test"

выдать сообщение об ошибке и выйти

с кодом возврата 1*/

printf("%s\n","ошибка открытия файла\n");

return(1);

}

fclose(fp);

return 0;

}

-----------------------------------------------------------------------------

#include<stdio.h>

/*Пример3 программы открытия файла "test1" только

для чтения с проверкой

наличия ошибки при вызове функции fopen()*/

int main()

{

FILE *fp;

if((fp=fopen("test1","r"))==NULL)

{/*При попытке открыть несуществующий файл "test1"

вывести сообщение об ошибке и выйти с кодом

возврата 1*/

printf("%s\n","ошибка открытия файла\n");

return(1);

}

fclose(fp);

return 0;

}

-----------------------------------------------------------------------------

#include<stdio.h>

/*Пример4-программы создания файла "test" с последовательным доступом*/

int main()

{

FILE *fp;

/*Открыть новый файл "test" для записи

как текстовый*/

if((fp=fopen("TEST.TXT","wt"))==NULL)

{/*При попытке открыть несуществующий файл "test"

вывести сообщение об ошибке и выйти с кодом

возврата 1*/

printf("%s\n","ошибка открытия файла\n");

return(1);

}

/* Добавление строк в файл с помощью функции FPRINRF()*/

fprintf(fp,"%s\n","Иван");

fprintf(fp,"%s\n","Петр");

fprintf(fp,"%s\n","Михаил");

fprintf(fp,"%s\n","Aндрей");

fprintf(fp,"%s\n","Никифор");

fclose(fp);

return 0;

}

-----------------------------------------------------------------------------

#include<stdio.h>

/*Пример5-программы чтения и вывода

ранее созданного файла "test" с последовательным доступом*/

int main()

{

FILE *fp;

char StrBuf[80];

/*Открыть уже сущесвующий файл "test" для чтения

как текстовый*/

if((fp=fopen("TEST.TXT","rt"))==NULL)

{/*При попытке открыть несуществующий файл "test"

вывести сообщение об ошибке и выйти с кодом

возврата 1*/

printf("%s\n","ошибка открытия файла\n");

return(1);

}

/* Последовательно читать и выводить

содержимое файла пока функцией FGETS()

не будет возвращен NULL, указывающий на конец

файла */

while((fgets(StrBuf,80,fp))!=NULL)

{

printf("%s\n",StrBuf);

}

fclose(fp);

return 0;

}

-----------------------------------------------------------------------------

#include<stdio.h>

#include<string.h>

/*Пример6-программы чтения,изменения и вывода

ранее созданного файла "test" с последовательным доступом*/

int main()

{

FILE *fp1;

char StrBuf[80];

char NameCmp[]="Михаил\n";

long int PosCur;

/*Открыть уже существующий файл "test" для чтения

и внесения изменений как текстовый*/

if((fp1=fopen("TEST.TXT","r+t"))==NULL)

{

/*При попытке открыть несуществующий файл "test"

вывести сообщение об ошибке и выйти с кодом

возврата 1*/

printf("%s\n","ошибка открытия файла\n");

return(1);

}

/* Последовательно читать

содержимое файла пока функцией FGETS()

не будет возвращен NULL, указывающий на конец

файла */

while((fgets(StrBuf,80,fp1))!=NULL)

{

/* Получить текущее значение файлового указателя с помощью

функции FTELL() */

PosCur=ftell(fp1);

/* Проверка на совпадение прочитанного имени

с искомой строкой */

if(stricmp(StrBuf,NameCmp)==0)

{

/* При совпадении передвинуть указатель с помощью

функции fseek() в начало найденной строки и записать

на это место новую строку*/

fseek(fp1,(PosCur-strlen(NameCmp)-1),SEEK_SET);

fprintf(fp1,"%s\n","Федор");

}

}

/* Указатель fseek - на начало файла*/

fseek(fp1,0,SEEK_SET);

/*Последовательно читать и выводить

содержимое файла, пока функция fgets()

не возвратит NULL, означающий конец файла*/

while((fgets(StrBuf,80,fp1)) !=NULL)

{

printf("%s\n",StrBuf);

}

fclose(fp1);

return 0;

}

#include<stdio.h>

#include<string.h>

/*Пример7-программы создания текстового файла

с произвольным доступом*/

/*Задание используемой структуры записи*/

typedef struct Names {

char FirstName[20];

} NAMES;

int main()

{

FILE *fp1;

NAMES NameRecord; /*Структура записи*/

/* Создать файл для исправления */

if((fp1=fopen("NAMES.BIN","w+b"))==NULL)

{

printf("%s\n","ошибка открытия файла\n");

return(1);

}

/* Скопировать имена в запись, а записи вписать в файл */

strcpy(NameRecord.FirstName,"САША");

fwrite(&NameRecord,sizeof(NAMES),1,fp1);

strcpy(NameRecord.FirstName,"ДАША");

fwrite(&NameRecord,sizeof(NAMES),1,fp1);

strcpy(NameRecord.FirstName,"МАША");

fwrite(&NameRecord,sizeof(NAMES),1,fp1);

strcpy(NameRecord.FirstName,"ГЛАША");

fwrite(&NameRecord,sizeof(NAMES),1,fp1);

strcpy(NameRecord.FirstName,"ЯША");

fwrite(&NameRecord,sizeof(NAMES),1,fp1);

fclose(fp1);

return 0;

}

#include<stdio.h>

#include<string.h>

/*Пример8-программы чтения и вывода информации из файла

с произвольным доступом*/

/*Задание используемой структуры записи*/

typedef struct Names {

char FirstName[20];

} NAMES;

int main()

{

FILE *fp1;

NAMES NameRecord; /*Структура записи*/

int Err; /* Код возврата ошибки */

/* Открыть уже существующий двоичный файл

с именем NAMES.BIN

только для чтения */

if((fp1=fopen("NAMES.BIN","rb"))==NULL)

{

printf("%s\n","ошибка открытия файла\n");

return(1);

}

/* Последовательный просмотр файла и

вывод значений */

do {

Err=fread(&NameRecord,sizeof(NAMES),1,fp1);

if (Err) /* Если Err равно нулю,

то есть вызов fread() успешен,

то напечатать очередное имя */

printf("%s\n",NameRecord.FirstName);

} while (Err);

fclose(fp1);

return 0;

}

18

Работа с файлами21.06.2019

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]