Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование fopen(), getc(), putc(), и fclose()↑ ⇐ ПредыдущаяСтр 5 из 5 Содержание книги
Поиск на нашем сайте
Функции fopen(), getc(), putc() и fclose() — это минимальный набор функций для операций с файлами. Следующая программа, KTOD, представляет собой простой пример, в котором используются только функции putc(), fopen() и fclose(). В этой программе символы считываются с клавиатуры и записываются в дисковый файл до тех пор, пока пользователь не введет знак доллара. Имя файла определяется в командной строке. Например, если вызвать программу KTOD, введя в командной строке KTOD TEST, то строки текста будут вводиться в файл TEST. /* KTOD: программа ввода с клавиатуры на диск. */ #include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { FILE *fp; char ch;
if(argc!=2) { printf("Вы забыли ввести имя файла.\n"); exit(1); }
if((fp=fopen(argv[1], "w"))==NULL) { printf("Ошибка при открытии файла.\n"); exit(1); }
do { ch = getchar(); putc(ch, fp); } while (ch!= '$');
fclose(fp);
return 0; } Программа DTOS, являющаяся дополнением к программе KTOD, читает любой текстовый файл и выводит его содержимое на экран. /* DTOS: программа, которая читает файлы и выводит их на экран. */ #include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { FILE *fp; char ch;
if(argc!=2) { printf("Вы забыли ввести имя файла.\n"); exit(1); }
if((fp=fopen(argv[1], "r"))==NULL) { printf("Ошибка при открытии файла.\n"); exit(1); }
ch = getc(fp); /* чтение одного символа */
while (ch!=EOF) { putchar(ch); /* вывод на экран */ ch = getc(fp); }
fclose(fp);
return 0; } Испытывая эти две программы, вначале с помошью KTOD создайте текстовый файл, а затем с помошью DTOS прочитайте его содержимое. Использование feof() Как уже говорилось, если достигнут конец файла, то getc() возвращает EOF. Однако проверка значения, возвращенного getc(), возможно, не является наилучшим способом узнать, достигнут ли конец файла. Во-первых, файловая система языка С может работать как с текстовыми, так и с двоичными файлами. Когда файл открывается для двоичного ввода, то может быть прочитано целое значение, которое, как выяснится при проверке, равняется EOF. В таком случае программа ввода сообщит о том, что достигнут конец файла, чего на самом деле может и не быть. Во-вторых, функция getc() возвращает EOF и в случае отказа, а не только тогда, когда достигнут конец файла. Если использовать только возвращаемое значение getc(), то невозможно определить, что же на самом деле произошло. Для решения этой проблемы в С имеется функция feof(), которая определяет, достигнут ли конец файла. Прототип функцииfeof() такой: int feof(FILE * уф); Если достигнут конец файла, то feof() возвращает true (истина); в противном же случае эта функция возвращает нуль. Поэтому следующий код будет читать двоичный файл до тех пор, пока не будет достигнут конец файла: while(!feof(fp)) ch = getc(fp); Ясно, что этот метод можно применять как к двоичным, так и к текстовым файлам. В следующей программе, которая копирует текстовые или двоичные файлы, имеется пример применения feof(). Файлы открываются в двоичном режиме, а затем feof() проверяет, не достигнут ли конец файла. /* Копирование файла. */ #include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { FILE *in, *out; char ch;
if(argc!=3) { printf("Вы забыли ввести имя файла.\n"); exit(1); }
if((in=fopen(argv[1], "rb"))==NULL) { printf("Нельзя открыть исходный файл.\n"); exit(1); } if((out=fopen(argv[2], "wb")) == NULL) { printf("Нельзя открыть файл результатов.\n"); exit(1); }
/* Именно этот код копирует файл. */ while(!feof(in)) { ch = getc(in); if(!feof(in)) putc(ch, out); }
fclose(in); fclose(out);
return 0; } Графика в Си. Си тіліндегі графика. 17 тарау C ТІЛІНІҢ ГРАФИКАЛЫҚ ИНТЕРФЕЙСІ 199 бет Объектно-ориентированное программирование. Объектілі-ба ғ ыттал ғ ан программалау. 23 тарау ОББ ПРИНЦИПТЕРІ 257 бет
|
||||
Последнее изменение этой страницы: 2021-12-15; просмотров: 42; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.110.231 (0.006 с.) |