Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЯВУ - методичка2.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
403.97 Кб
Скачать

Начало_отсчета может принимать следующие значения:

SEEK_SET (или 0) – сдвиг выполняется от начала файла;

SEEK_CUR (или 1) – сдвиг выполняется от текущей позиции маркера;

Seek_end (или 2) – сдвиг выполняется от конца файла;

Символьные константы начала_отсчета определены в заголовочном файле stdio.h. В случае успеха функция возвращает 0, иначе – EOF (–1).

Например, если из файла с указателем myfile прочитана строка из 20 символов, и мы хотим вернуться к началу этой строки, необходимо позиционировать маркер записи-чтения файла функцией

fseek (myfile, -20, SEEK_CUR).

Функции файлового ввода-вывода

Эти функции можно разделить на несколько типов в зависимости от структуры передаваемых данных:

Тип функции ввода-вывода

Структура данных

Посимвольный

Поток символов

Построчный

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

Форматированный

Форматированные поля с разделителями

Блоковый

Последовательность записей постоянной длины (блоков)

Первые три типа файловых функций ввода-вывода работают аналогично стандартным функциям ввода-вывода, однако требуют задания указателя на обрабатываемый файл, например, описанного как

FILE *fp.

Посимвольный ввод-вывод

Стандартные функции ввода fgetchar () или getchar () возвращают прочитанный символ из файла stdin (буфер ввода), который можно записать в переменную целого типа:

int ch;

ch = getchar(); .

Поскольку значение признака конца файла EOF не должно совпадать с ASCII-кодами символов, его определяют равным –1, а переменную ch описывают как целую, а не символьную.

Файловые функции чтения fgetc (fp) или getc (fp) возвращают символ из открытого файла fp:

ch = fgetc (fp);.

Стандартные функции вывода fputchar (ch) или putchar (ch) выводят символ на экран (stdout):

putchar(ch); .

Функции записи в файл fputc (fp) или putc (fp) помещают символ в открытый файл fp:

fputc (ch, fp); .

Пример. Демонстрируются приемы открытия и закрытия файла, а также использование файлового и стандартного символьного ввода-вывода данных.

Программа.

#include<conio.h>

#include<stdio.h>

int main ()

{ int ch;

char *filename = "c:\\tc\\myfiles\\char.dat"; /* спецификация файла */

FILE *fp; /* указатель файла */

clrscr(); /* очистка экрана */

/* Открытие файла для записи: */

if (( fp = fopen(filename, "w")) == NULL)

{ рuts ("0шибка открытия файла.\n”

”Проверьте спецификацию файла.");

puts ("He забудьте про удвоение символа \\ .");

return 0; /* аварийный выход из программы */

}

printf ("Фaйл %s открыт для записи.\n”

”Введите несколько символов и нажмите Enter.", filename);

printf (" EOF:%d\n", EOF); /* вывод значения EOF */

while ((ch=getchar()) != '\n') /* цикл ввода символов */

fputc (ch, fp); /* запись символа в файл */

freopen (filename, "r", fp); /* переоткрытие файла для чтения */

рuts ("Вывод символов из файла");

while ((ch=getc(fp)) != EOF) /* цикл чтения символов из файла */

putchar (ch); /* вывод символа на экран */

fclose(fp); /* закрытие файла */

printf("\nНажмите лю6ую клавишу...");

getch(); /* задержка экрана результатов */

return 1; /* нормальное окончание программы */

}

Результаты программы:

Файл c:\tc\myfiles\char.dat открыт для записи.

Введите несколько символов и нажмите Enter. EOF= -1

Привет, программист!