Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функции для работы с файламиСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
сhmod() #include <io.h> Изменяет режим доступа к файлу. int chmod(const char *path, int mode); chsize() #include<io.h> Изменяет размер файла. int chsize(int handle, long size); close() #include<io.h> Закрывает файл. int close(int handle); creatnew() #include <dos.h> Создает новый файл. int creatnew(const char *path, int mode); eof() #include<io.h> Определяет, достигнут ли конец файла. int eof(int handle); fclose() #include <stdio.h> Закрывает поток. int fclose (FILE *stream); fdopen() #include<stdio.h> Связывает поток с логическим номером файла. feof() #include<stdio.h> ferror() #include<stdio.h> Обнаруживает ошибки в потоке. int ferror(FILE *stream); fgetc() #include<stdio.h> Получает символ из потока. int fgetc(FILE *stream); fgetchar() #include<stdio.h> Получает символ из потока stdin. int fgetchar(void); fgetpos() #include<stdio.h> Возвращает положение указателя текущей позиции в файле. int fgetpos(FILE *stream, fpos_t *pos); fgets() #include<stdio.h> Получает строку символов из потока. char *fgets(char s, int n, FILE *stream); fopen() #include <stdio.h> Открывает поток. FILE *fopen(char *filename, char *type); fprintf() #include <stdio.h> Осуществляет форматированный вывод в поток. int fprintf(FILE *stream, const char *format [argument,...]); fputc() #include <stdio.h> Выводит символ в поток. int fputc(int c, FILE *stream); fputchar() #include <stdio.h> Выводит символ в поток stdout. int fputchar(int c); fputs() #include <stdio.h> Выводит строку символов в поток. int fputs(char *string, FILE *stream); fread() #include <stdio.h> Считывает данные из потока. size_t fread(void *ptr, size_t size, size_t n, FILE *stream); freopen() #include <stdio.h> Связывает с потоком новый файл. FILE *freopen(char *filename, char *mode, FILE *stream); fscanf() #include <stdio.h> Выполняет форматированный ввод из потока. int fscanf(FILE *stream, char *format [adress,...]); fseek() #include <stdio.h> Устанавливает указатель файла в потоке. int fseek(FILE *stream, long offset, int fromwhere); fsetpos() #include<stdio.h> Позиционирует указатель текущей позиции в файле, связанном с потоком stream. int fsetpos(FILE *stream, const fpos_t *pos); ftell() #include <stdio.h> Возвращает положение указателя текущей позиции файла. long ftell(FILE *stream); fwrite() <stdio.h>#include Записывает данные в поток. size_t fwrite(void *ptr, size_t size, size_t n, FILE *stream); getc() #include <stdio.h> Вводит из потока символ. int getc(FILE *stream); getchar() #include <stdio.h> Вводит символ из потока stdin. int getchar(void); gets() #include<stdio.h> Вводит строку символов из потока stdin. char *gets(char *s); getw() #include <stdio.h> Вводит из потока целое число. int getw(FILE *stream); Перемещает указатель чтения/записи файла. lseek() #include <io.h> long lseek(int handle, long offset, int fromwhere); _ open() #include <fcntl.h> Открывает файл для чтения или записи. int _open(const char *filename, int oflags); open() #include <fcntl.h>; #include <sys\stat.h>; Открывает файл для чтения int open(const char *filename, int access [unsigned mode]); или записи. putc() #include <stdio.h> Выводит символ в поток. int putc(int c, FILE *stream); putchar() #include <stdio.h> Выводит символ в поток stdout. int putchar(int c); puts() #include<stdio.h> Выводит строку в поток stdout. int puts(const char *s); putw() #include <stdio.h> Помещает в поток целое значение. int putw(int w, FILE *stream); _ read() #include<io.h> Считывает данные из файла. int _read(int handle, void *buf, unsigned len); read() #include<io.h> Считывает данные из файла. int read(int handle, void *buf, unsigned len); rewind() #include <stdio.h> Устанавливает указатель в начало потока. int rewind(FILE *stream); setmode() #include<fcntl.h> Устанавливает режим открытия файла. int setmode(int handle, unsigned amode); unlink() #include<io.h> Удаляет файл. int unlink(const char *filename); vprintf() #include <stdarg.h> Осуществляет форматированный вывод в стандартный поток stdout. int vprintf (const char *format, va_list arglist); _ write() #include<io.h> Записывает данные в файл. int _write(int handle, void *buf, unsigned len); write() #include<io.h> Записывает данные в файл. int write(int handle, void *buf, unsigned len);
Пример
/* ЗАНЯТИЕ N17 Разработал Петров Ю.В. Объявить структуру, содержащую члены типа int, float, char, выполнить инициализацию нескольких структур в цикле и запись их в файл. Объявить и инициализировать массивы данных для членов структур,записать их в отдельные файлы. Ввести значения элементов структур, прочитав их из созданных файлов данных и дописать в конец файла структур. Прочитать структуры из полученного файла и вывести значения членов структур на экран */
#include <stdio.h> #include <CONIO.H> #include <CTYPE.H> #define N 5
int main(void) { struct str{ int ces; float ves; char tip; } st; FILE *fstr; //Объявление указателя на файл (для структур) FILE *fces,*fves,*ftip;//Объявление указателей на файлы int a, mces[ ] ={1, 24, 14, 5, 16}; float mves[ ] ={2.3, 3.4, 5.3, 5.6, 2.4}; char mtip[ ] ="abcde"; clrscr(); // Открытие файлов для записи и чтения ("w+"): // FILE *fopen(const char *filename, const char *mode); if ((fstr = fopen("fstr.dat", "w+")) == NULL) { fprintf(stderr, "Cannot open output file\n"); return 1; } if ((fces = fopen("fc.dat", "w")) == NULL) //Только для записи { fprintf(stderr, "Cannot open output file\n"); return 1; } if ((fves = fopen("fv.dat", "w+")) == NULL) { fprintf(stderr, "Cannot open output file\n"); return 1; } if ((ftip = fopen("ft.dat", "w+")) == NULL) { fprintf(stderr, "Cannot open output file\n"); return 1; } int i=1; do { printf(" Ввод данных в файл структур: %i\n",i); met1: printf("Ввод даты (>0, тип - int):");scanf("%i",&st.ces); if (st.ces<=0) { fflush(stdin); goto met1;} fflush(stdin); met2: printf("Ввод веса (>0, тип - float):");scanf("%f",&st.ves); if (st.ves<=0) { fflush(stdin); goto met2;} fflush(stdin); met3: printf("Ввод вида (тип - сhar):");scanf("%c",&st.tip); if (!isalpha(st.tip)) { fflush(stdin); goto met3;} // Запись полученной структуры в файл fstr fwrite(&st, sizeof(st), 1, fstr); i++; printf("Выход а==0 Введите а="); scanf("%i", &a); } while(a); //Конец записи структур в файл fstr // Запись в файлы данных из массивов: mces[i], mves[i], mtip[i] for(i=0;i<N;i++) {//Формат и применение функций записи в файл: //int fprintf (FILE *stream, const char *format [, argument,...]); fprintf(fces,"%d ", mces[i]); //Из массива mces[i] //size_t fwrite(const void *ptr, size_t size, size_t n, FILE*stream); fwrite (&mves[i], sizeof(float), 1, fves); //Из массива mves[i] //int fputc(int c, FILE *stream); fputc (mtip[i],ftip); //Из массива mtip[i] }
fclose(fces); //Закрытие файла fces // int fseek(FILE *stream, long offset, int whence); fseek(fves, 0L,SEEK_SET);//Установка указателя файла fves на начало fseek(ftip, 0L,SEEK_SET);//Установка указателя файла ftip на начало // Открытие файла fces для чтения ("r"): if ((fces = fopen("fc.dat", "r")) == NULL) { fprintf(stderr, "Cannot open input file\n"); return 1; } printf("Ввод данных в структуры из файлов данных для отдельных членов:\n"); for(i=0;i<N;i++) {//Формат и применение различных функций чтения данных //из файлов и инициализация членов структуры st: // int fscanf (FILE *stream, const char *format [, address,...]); fscanf (fces, "%d", &st.ces); // size_t fread(void *ptr, size_t size, size_t n, FILE *stream); fread (&st.ves, sizeof(float), 1, fves); // int fgetc(FILE *stream); st.tip=fgetc (ftip); // Результаты инициализации членов структуры st printf("Дата=%d Вес=%f Вид=%c \n", st.ces, st.ves, st.tip); // Запись полученной структуры в конец существующего файла fstr fwrite (&st, sizeof(st), 1, fstr); } fseek(fstr, 0L, SEEK_SET); printf("\nВывод данных из файла структур: Дата, Вес, Вид \n"); while(1) { a=fread(&st, sizeof(st), 1, fstr); if (a==0) goto end; printf("Дата= %i Вес= %f Вид=%c\n ", st.ces, st.ves, st.tip); }
end: fclose(fstr); fcloseall(); //fclose(fces); fclose(fves); fclose(ftip); getch(); return 0; } /* Ввод данных в файл структур: 1 Ввод даты (>0, тип - int):3 Ввод веса (>0, тип - float):4.6 Ввод вида (тип - сhar):g Выход а==0 Введите а=1 Ввод данных в файл структур: 2 Ввод даты (>0, тип - int):19 Ввод веса (>0, тип - float):2.7 Ввод вида (тип - сhar):p Выход а==0 Введите а=0 Ввод данных в структуры из файлов данных для отдельных членов: Дата=1 Вес=2.300000 Вид=a Дата=24 Вес=3.400000 Вид=b Дата=14 Вес=5.300000 Вид=c Дата=5 Вес=5.600000 Вид=d Дата=16 Вес=2.400000 Вид=e Вывод данных из файла структур: Дата, Вес, Вид Дата= 3 Вес= 4.600000 Вид=g Дата= 19 Вес= 2.700000 Вид=p Дата= 1 Вес= 2.300000 Вид=a Дата= 24 Вес= 3.400000 Вид=b Дата= 14 Вес= 5.300000 Вид=c Дата= 5 Вес= 5.600000 Вид=d Дата= 16 Вес= 2.400000 Вид=e */
Ход работы 1 Изучить теоретические сведения. 2 В соответствии с индивидуальным заданием разработать алгоритм и программу с применением указанных функций высокого и низкого уровня. 3 Набрать программу на компьютере, и устранить ошибки. 4 Получить результат. 5 Оформить отчет. 6 Подготовиться к защите лабораторной работы, изучив контрольные вопросы по данной теме.
Индивидуальное задание к лабораторной работе №17 Составить программу для записи данных структурного типа в файл. Ввод информации осуществлять с использованием функций высокого уровня, вывод информации осуществлять с использованием функций низкого уровня. Индивидуальные задания приведены в таблице 17.1. Таблица 17.1 - Индивидуальные задания
Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы 1 Приведите общий формат объявления функции. 2 Приведите формат определения функции. 3 Какие классы памяти используются при объявлении функций. 4 Охарактеризуйте формальные параметры приведенных функций. 5 Что означает запись FILE *? 6 Что означает термин-поток? 7 Какие стандартные потоки открываются при выполнении программы? 8 Какие существуют режимы работы с файлами? 9 Какие заголовочные файлы содержат объявления библиотечных функций для работы с потоками. 10 Какие функции обеспечивают форматированный ввод/вывод данных? 11 Что такое буферизация и можно ли ею управлять? Лабораторная работа № 18 Разработка программ с многофайловой структурой. (4 часа) Цель работы: ознакомиться с написанием программ с многофайловой структурой, заголовочными файлами, изучить классы памяти переменных и функций, научиться создавать модульные программы и заголовочные файлы. Изучить область действия и время жизни переменных и функций с различными классами памяти. Теоретические сведения
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 619; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.37.86 (0.011 с.) |