Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лысаков. Основы программирования

Лысаков. Основы программирования (Лекции (2017)), страница 11

PDF-файл Лысаков. Основы программирования (Лекции (2017)), страница 11 Программирование (85821): Лекции - 2 семестрЛысаков. Основы программирования (Лекции (2017)) - PDF, страница 11 (85821) - СтудИзба2021-01-26СтудИзба

Описание файла

Файл "Лысаков. Основы программирования" внутри архива находится в следующих папках: Лекции 2017, Лекции 2017. PDF-файл из архива "Лекции (2017)", который расположен в категории "". Всё это находится в предмете "программирование" из 2 семестр, которые можно найти в файловом архиве НГУ. Не смотря на прямую связь этого архива с НГУ, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 11 страницы из PDF

Более того, еслипотока влечет всевозможные неприятности, включая потерю данных,файл открыт в режиме дозаписи, то все новые данные, которыеиспорченные файлы и возможные периодические ошибки в программе.записываются в него, будут добавляться в конец файла. Содержимое,Функция fclose() также освобождает блок управления файлом, связанныйкоторое хранилось в нем до открытия (если только оно было), изменено нес этим потоком, давая возможность использовать этот блок снова.

Так какбудет. Далее, если файл открывают для записи, но выясняется, что он неколичество одновременно открытых файлов ограничено, то, возможно,существует, то он будет создан. А если он существует, то содержимое,придется закрывать один файл, прежде чем открывать другой. Прототипкоторое хранилось в нем до открытия, будет утеряно, причем будет созданфункции fclose() такой:новый файл. Разница между режимами r+ и w+ состоит в том, что еслифайл не существует, то в режиме открытия r+ он создан не будет, а в89int fclose(FILE * файл);90www.phys.nsu.ruВозвращение нуля означает успешную операцию закрытия.

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

Прототип этой функциитолько тогда, когда диск был преждевременно удален (стерт) с дисководаследующий:или на диске не осталось свободного места.7.6.Запись символаВ системе ввода/вывода языка С определяются две эквивалентныефункции, предназначенные для вывода символов: putc() и fputc().

(Насамом деле putc() обычно реализуется в виде макроса.) Две идентичныефункции имеются просто потому, чтобы сохранять совместимость состарыми версиями С. В этой книге используется putc(), но применениеfputc() также вполне возможно.Функция putc() записывает символы в файл, который с помощьюfopen() уже открыт в режиме записи. Прототип этой функцииint getc(FILE * файл);Функция getc() возвращает целое значение, но символ находится вмладшем байте. Если не произошла ошибка, то старший байт (байты)будет обнулен.Если достигнут конец файла, то функция getc() возвращает EOF.Поэтому, чтобы прочитать символы до конца текстового файла, можноиспользовать следующий код:do{ch = getc(fp);}while(ch!=EOF);следующий:int putc(int ch, FILE * файл);Однако getc() возвращает EOF и в случае ошибки. Для определенияУказатель файла сообщает putc(), в какой именно файл следуетзаписывать символ.

Хотя ch и определяется как int, однако записываетсятолько младший байт.Если функция putc() выполнилась успешно, то возвращаетсязаписанный символ. В противном же случае возвращается EOF.того, что же на самом деле произошло, можно использовать ferror().7.8.Использование fopen(), getc(), putc(), и fclose()Функции fopen(), getc(), putc() и fclose() — это минимальныйнабор функций для операций с файлами. Следующая программа,представляет собой простой пример, в котором используются только7.7.функции putc(), fopen() и fclose(). В этой программе символыЧтение символасчитываются с клавиатуры и записываются в дисковый файл до тех пор,Для ввода символа также имеются две эквивалентные функции: getc()и fgetc(). Обе определяются для сохранения совместимости со старыми91пока пользователь не введет знак доллара.

Имя файла определено впрограмма «test.txt».92www.phys.nsu.ruvoid main(){FILE *fp;7.9.char ch;if((fp=fopen("test.txt", "w"))==NULL){printf("ERROR\n");return;}do {ch = getchar();putc(ch, fp);}while (ch != '$');fclose(fp);Использование feof()Как уже говорилось, если достигнут конец файла, то getc() возвращаетEOF. Однако проверка значения, возвращенного getc(), возможно, неявляется наилучшим способом узнать, достигнут ли конец файла. Вопервых, файловая система языка С может работать как с текстовыми, так ис двоичными файлами. Когда файл открывается для двоичного ввода, томожет быть прочитано целое значение, которое, как выяснится припроверке, равняется EOF. В таком случае программа ввода сообщит отом, что достигнут конец файла, чего на самом деле может и не быть.

Вовторых, функция getc() возвращает EOF и в случае отказа, а не толькотогда,когдадостигнутконецфайла.Еслииспользоватьтольковозвращаемое значение getc(), то невозможно определить, что же на}самом деле произошло. Для решения этой проблемы в С имеется функцияСледующая программа, читает любой текстовый файл и выводит егосодержимое на экран.void main(){FILE *fp;feof(), которая определяет, достигнут ли конец файла.

Прототип функцииfeof() такой:int feof(FILE * файл);char ch;if((fp=fopen("test.txt", "r")) == NULL){printf("ERROR.\n");return;}ch = getc(fp);while (ch!=EOF){putchar(ch);ch = getc(fp);}Если достигнут конец файла, то feof() возвращает true (истина); впротивном же случае эта функция возвращает нуль. Поэтому следующийкод будет читать двоичный файл до тех пор, пока не будет достигнутконец файла:while(!feof(fp)) ch = getc(fp);Ясно, что этот метод можно применять как к двоичным, так и ктекстовым файлам.В следующей программе, которая копирует текстовые или двоичныефайлы, имеется пример применения feof(). Файлы открываются вдвоичном режиме, а затем feof() проверяет, не достигнут ли конец файла.fclose(fp);}9394www.phys.nsu.ruvoid main(){FILE *in, *out; char ch;if((in=fopen("in.txt", "rb"))==NULL){printf("ERROR\n");return;}Функция fgets() читает из определенного потока строку, и делает этодо тех пор, пока не будет прочитан символ новой строки или количествопрочитанных символов не станет равным длина-1.

Если был прочитанразделитель строк, он записывается в строку, чем функция fgets()отличается от функции gets(). Полученная в результате строка будетоканчиваться символом конца строки ('0'). При успешном завершенииработы функция возвращает cmp, а в случае ошибки — пустой указательif((out=fopen("out.txt", "wb")) == NULL){printf("ERROR\n");return;}(null).while(!feof(in)){ch = getc(in);if(!feof(in)) putc(ch, out);}пустую строку.

Так как функция gets() не записывает разделитель строк,В следующей программе показано использование функции fputs().Она читает строки с клавиатуры и записывает их в файл, которыйназывается TEST. Чтобы завершить выполнение программы, введитето его приходится специально вставлять перед каждой строкой,записываемой в файл; это делается для того, чтобы файл было легчечитать:#include <stdio.h>#include <stdlib.h>#include <string.h>fclose(in);fclose(out);}7.10. Ввод / вывод строк: fputs() и fgets()Кроме getc() и putc(), в языке С также поддерживаются родственныеvoid main(void){char str[80]; FILE *fp;if((fp = fopen("test.txt", "w"))==NULL){ printf("Error\n");return;}им функции fgets() и fputs(). Первая из них читает строки символов изфайла на диске, а вторая записывает строки такого же типа в файл, тоженаходящийся на диске.

Эти функции работают почти как putc() и getc(),но читают и записывают не один символ, а целую строку. Прототипыdo {printf("Input string\n");gets(str);strcat(str, "\n");fputs(str, fp);} while(*str!='\n');функций fgets() и fputs() следующие:int fputs(const char *cmp, FILE * файл);char *fgets(char *cmp, int длина, FILE * файл);Функция fputs() пишет в определенный поток строку, на которуюуказывает cmp. В случае ошибки эта функция возвращает EOF.95}fclose(fp);96www.phys.nsu.ru}while(*str!='\n');7.11. Функция rewind()Функция rewind() устанавливает указатель текущей позиции в файлеrewind(fp);на начало файла, указанного в качестве аргумента этой функции.

Инымисловами, функция rewind() выполняет "перемотку" (rewind) файла. Вот ееwhile(!feof(fp)){fgets(str, 79, fp);printf(str);}прототип:void rewind(FILE * файл);Чтобы познакомиться с rewind(), изменим программу из предыдущегораздела таким образом, чтобы она отображала содержимое файла сразуfclose(fp);}после его создания. Чтобы выполнить отображение, программа после7.12. Функция ferror()завершения ввода "перематывает" файл, а затем с помощью fback()Функция ferror() определяет, произошла ли ошибка во времячитает его с самого начала. Обратите внимание, что сейчас файлвыполнения операции с файлом.

Прототип этой функции следующий:необходимо открыть в режиме чтения/записи, используя в качествеаргумента, задающего режим, строку "w+".int ferror(FILE *файл);Функция возвращает значение true (истина), если при последней#include <stdio.h>#include <stdlib.h>#include <string.h>операции с файлом произошла ошибка; в противном же случае онавозвращает false (ложь). Так как при любой операции с файломvoid main(void){char str[80]; FILE *fp;устанавливается свое условие ошибки, то после каждой такой операцииследует сразу вызывать ferror(), а иначе данные об ошибке могут бытьпотеряны.if((fp = fopen("test.txt", "w+"))==NULL){printf("Ошибка при открытии файла.\n"); return;}do{printf("Введите строку (пустую - длявыхода):\n");gets(str);strcat(str, "\n"); /* ввод разделителя строк */fputs(str, fp);977.13.

Стирание файловФункция remove() стирает указанный файл. Вот ее прототип:int remove(const char *имя_файла);В случае успешного выполнения эта функция возвращает нуль, а впротивном случае — ненулевое значение.98www.phys.nsu.ru7.14. Функции fread() и fwrite()файла. Обратите внимание, как в этой программе при определении длиныДля чтения и записи данных, тип которых может занимать более 1каждого типа данных используется функция sizeof().байта, в файловой системе языка С имеется две функции: fread() и#include <stdio.h>#include <stdlib.h>fwrite().

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5301
Авторов
на СтудИзбе
417
Средний доход
с одного платного файла
Обучение Подробнее