Главная » Просмотр файлов » Лекция 4. Более сложные элементы программирования

Лекция 4. Более сложные элементы программирования (1153711), страница 3

Файл №1153711 Лекция 4. Более сложные элементы программирования (Электронные лекции) 3 страницаЛекция 4. Более сложные элементы программирования (1153711) страница 32020-08-21СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Если считан признак конца файла, то функция feof устанавливается в значение истина, иначе – в значение ложь.Открытие файла для записи предусматривает выполнение следующих действий:1. Поиск файла с заданным физическим именем; если файл ненайден, то создается новый файл.2. Содержимое файла очищается.133. Указатель файла устанавливается на конец файла, который, поскольку файл очищен, одновременно является его началом.4. Функция feof устанавливается в значение истина. Это значениесохраняется при последующей записи в файл, т. е. запись происходит в конец файла.Открытие файла для дополненния предусматривает выполнениеследующих действий:1.

Поиск файла с заданным физическим именем; если файл ненайден, то выдается сообщение об ошибке.2. Указатель файла устанавливается на конец файла (после последней компоненты).3. Функция feof устанавливается в значение истина.Рассмотренные ранее функции scanf, printf, puts, gets имеютаналоги для работы с текстовыми файлами. Их названия получаютсядобавлением справа буквы f к именам упомянутых функций.Шаблоны функций файлового форматного вывода и ввода:int fprintf(програм_имя_ файла, форматная_строка, список_вывода);int fscanf(програм_имя_ файла, форматная_строка, список_вывода);Шаблоны функций fputs и fgets:char *fgets(char *string, int nmax,FILE *f)char *fputs(char *string, FILE *f)где string - адрес начала вводимого массива символов,f - указатель на текстовый файл,nmax - максимальная длина вводимой строки плюс 1.Функции putc (записать символ в поток) и getc (прочитать символиз потока) работают как с текстовыми, так и с двоичными файлами.Их шаблоны:int putc(int ch, FILE* f)(если оператор выполнен успешно, товозвращается записанный символ, иначе EOF)int getc(FILE *f)(если считывание не выполнено, то EOF)Для работы с двоичными файлами предназначены функциичтения и записи блоков:unsigned fread(void *buf, int zap, int n,FILE *f)unsigned fwrite(const void *buf, int zap, int n,FILE *f)14где buf - указатель на область памяти, с которой будет происходить обмен информацией, zap - длина записи, n - число считанных(записанных) записей, f - указатель на файл.После окончания работы с файлом его необходимо закрыть.

Призакрытии файла выполняется его сохранение (естественно, с перерегистрацией в каталоге). Кроме того, связь между программным и физическим именем файла, установленная при открытии файла, разрушается.Шаблон функции закрытия файла:int fclose(FILE * f) - возвращает значение нуль, если операциязакрытия прошла успешно.3.3.3. Примеры программ, использующих файлыПример 1. Размеры матрицы n и m и значения элементов матрицы считываются из текстового файла f_in.txt , затем матрица изменяется (скажите, как) и выводится в текстовый файл f_out.txt.#include <stdio.h>#include <conio.h>void main(){float a[5][5]; int n,m,i,j;FILE* f_in, *f_out;f_in=fopen("f_in.txt","rt"); //"c:\\dir\\f_in.txt"fscanf(f_in,"%d%d", &n,&m);for (i=0;i<n;i++)for (j=0;j<m;j++)fscanf(f_in,"%f",&a[i][j]);//fscanf(f_in,"%f", *(a+i)+j);//закончен ввод из файлаfor (i=0;i<n;i++)for (j=0;j<m;j++)a[i][j]=a[i][j]*a[i][j];//закончена обработка матрицыf_out=fopen("f_out.txt","wt");fputs("output matrix:\n",f_out);for (i=0;i<n;i++)15{for (j=0;j<m;j++)fprintf(f_out,"%6.1f ",a[i][j]);fprintf(f_out,"\n");}// вывели изменную матрицу в файлfclose(f_in);//необязательноfclose(f_out);//обязательно!!!!!puts("output file is ready!"); puts("output file is ready!");//каждая фраза на отдельной строке_getch();}Пример 2.

В каждой строке входного файла f_in.txt через пробел записаны фамилия и имя человека. Каждая строка входного файла считывается в переменную-строку s. В выходной файл f_out.txt записываются строки входного файла, содержащие фамилии «Иванов» и «Иванова».#include <stdio.h>#include <conio.h>#include <string.h>#define NMAX 100void main(){char s[NMAX]; int k,i;//k-число ИвановыхFILE *f_in, *f_out;f_in=fopen("f_in.txt", "rt");if (f_in==NULL)puts("file is not opened");elseif feof(f_in)puts("file is empty");else{f_out=fopen("f_out.txt", "wt");16k=0;while (fgets(s,NMAX+1,f_in)!=NULL){if (strstr(s,"Иванов ")!=NULL || strstr(s,"Иванова ")!=NULL){k=k+1;fputs(s,f_out);}}if (k>0){fclose(f_out);printf ("k=%d\n", k);puts("output file is ready");}elseputs("k=0");}_getch();}Пример 3.

Та же задача, что и в примере 2, но каждая строка текстового файла считывается в переменную-структуру.#include <stdio.h>#include <conio.h>#include <string.h>#pragma hdrstop#define NMAX 100void main(){ typedef struct {char s1[NMAX],s2[NMAX];} fam_im;fam_im f_i;int k,i;//число ИвановыхFILE *f_in, *f_out;f_in=fopen("f_in.txt", "rt");17if (f_in==NULL)puts("file is not opened");elseif feof(f_in)puts("file is empty");else{f_out=fopen("f_out.txt", "wt");k=0;while (fscanf(f_in,"%s %s",&f_i.s1,&f_i.s2)!=EOF){if (strcmp(f_i.s1,"Иванов")==0|| strcmp(f_i.s1,"Иванова")==0){k=k+1;fprintf(f_out, "%s %s\n", f_i.s1,f_i.s2);}}if (k>0){fclose(f_out);printf ("k=%d\n", k);puts("output file is ready");}elseputs("k=0");}_getch();}18.

Характеристики

Тип файла
PDF-файл
Размер
537,5 Kb
Тип материала
Высшее учебное заведение

Список файлов лекций

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