Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
http.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.34 Mб
Скачать

Запись символа

Система ввода/вывода ANSI С определяет две эквивалентные функции, выводящие символ - putc() и fputc(). (На самом деле putc() реализована в виде макроопределения.) Поддержка двух идентич­ных функций необходима для сохранения совместимости со старыми версиями С.

Функция putc() используется для записи символов в поток, ранее открытый для записи с помо­щью функции fopen(). Прототип для putc() следующий: int putc(int ch, FILE *fp); где fp — это указатель на файл, возвращенный fopen(), a ch - выводимый символ. Указатель на файл указывает putc(), в какой файл следует писать. По историческим причинам ch определена как int, но используется только младший бит.

Если putc() выполнена успешно, она возвращает выведенный символ. В противном случае воз­вращает EOF.

Чтение символа

Имеется две эквивалентные функции, предназначенные для ввода символа - getc() и fgetc(). Под­держка двух идентичных функций необходима для сохранения совместимости со старыми верси­ями С.

Функция getc() используется для чтения символов из потока, открытого на чтение с помощью fopen(). Прототип getc() следующий: int getc(FILE *fp); где fp - это указатель на файл типа FILE *, возвращенный fopen(). По традиции getc() возвращает целое, но старший байт установлен в 0.

Функция getc() возвращает EOF при достижении конца файла. Для чтения текстового файла до конца следует использовать следующий код: ch = getc(fp); while(ch!=EOF) { ch = getc(fp); }

fclose()

Функция fclose() используется для закрытия потока, ранее открытого с помощью fopen(). Она сохраняет в файл данные, находящиеся в дисковом буфере, и выполняет операцию системного уровня по закрытию файла. Вызов fclose() освобождает блок управления файлом, связанный с потоком, и делает его доступным для повторного использования.

Функция fclose() имеет прототип: int fclose(FILE *fp); где fp - это указатель на файл, возвращенный fopen(). Если возвращен 0, то это означает, что операция закрытия выполнена успешно, а если EOF, то, значит, была ошибка.

Использование fopen(), getc(), putc() и fclose()

Функции fopen(), getc(), putc() и fclose() составляют минимальный набор файловых операций. Ниже приведен простой пример использования putc(), fopen() и fclose() в программе ktod. Она просто читает символы с клавиатуры и записывает их в файл, пока не встретится точка. Имя файла указывается в командной строке. Например, если назвать программу ktod, а затем набрать ktod test, то можно будет ввести строчки текста в файл test. /* ktod: ключ к диску */ #include <stdio.h> int main(int argc, char *argv[]) { FILE *fp; char ch; if (argc!=2) { printf("You forgot to enter the filename."); return 1; } if((fp=fopen(argv[l], "w")) == NULL) { printf("Cannot open file."); return 1; } do { ch = getchar(); putc(ch, fp) ; } while (ch!='.'); fclose(fp); return 0; }

Программа dtos читает любой текстовый файл и выводит его содержимое на экран. В команд­ной строке следует указать имя файла. /* dtos: диск на экран */ #include <stdio.h> int main(int argc, char *argv[]) { FILE * fp; char ch; if (argc!=2) { printf("You forgot to enter the filename."); return 1; } if((fp=fopen(argv[1], "r")) == NULL) { printf("Cannot open file."); return 1; } ch = getc(fp); /* чтение одного символа */ while (ch!=EOF) { putchar(ch); /* вывод на экран */ ch = getc(fp); } fclose(fp); return 0; }

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