Функции для работы с файлами 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Функции для работы с файлами



с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>

Связывает поток с логическим номером файла.
FILE *fdopen(int handle, char *type);

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; просмотров: 581; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.238.76 (0.071 с.)