Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Некоторые функции ввода-вывода для консольного терминала.

Читайте также:
  1. I. Использование функции Подбор параметра
  2. I. Основные функции и функциональные задачи управления фирмой.
  3. II. Логистические функции.
  4. III. Функции действующих лиц
  5. III. Функции и полномочия контрактной службы
  6. Q.1.3. Некоторые явления нелинейной оптики.
  7. Акты и действия общ объединений, на которые гос возложило определенные властные функции.

Некоторые функции ввода-вывода на верхнем уровне

 

Fopen

FILE *fopen(char *pathname, char *type);

//pathname - path-имя файла.

//type - разрешенный тип доступа.

Функция fopen открывает файл, определяемый path-именем и возвращает указатель на открытый файл, который в дальнейшем передается другим функциям. Значе­ние указателя NULL свидетельствует об ошибке. Символы в строке type определяют тип доступа, требуемый для фай­ла, следующим образом.

РЕЖИМ ОПИСАНИЕ

"r" открыть файл для чтения.(Этот файл должен

существовать).

"w" открыть пустой файл для записи; если этот

файл ранее существовал, его содержимое

уничтожается.

"a" открыть файл для записи (добавления) в

конец. Если данного файла нет, то вначале

он создается.

"r+" открыть файл одновременно для чтения и

записи. Файл должен существовать.

"w+" открыть пустой файл для чтения и записи.

Если этот файл ранее существовал, его содержимое уничтожается.

"a+" открыть файл для чтения и добавления.

Если файла нет, вначале он создается.

Замечание! Нужно внимательно применять режимы "w", "w+", так как они могут уничтожить существующие файлы.

Если файл открыт при помощи типа "a" или "a+", все операции записи выполняются в конец файла. При использовании функций fseek или rewind возможно перепозиционирование указателя на файл; нес­мотря на это, указатель на файл перед выполнением любых операций записи всегда возвращается в конец файла. Таким образом, сущест­вующие данные не будут перезаписаны. При использовании типов "r+', "w+", "a+" допускается одновременно чтение и запись. (Гово­рится, что файл открывается для обновления). Поэтому, при перек­лючении чтения на запись и наоборот нужно использовать функции fseek или rewind. Для функции fseek (при необходимости) может быть точно определена текущая позиция.

Дополнительно к значениям, описанным выше, может быть до­бавлен в строке type один из следующих символов, чтобы специфици­ровать способ преобразования символа новой строки.

 

Символ Значение
t открыть в текстовом режиме;
b открыть в двоичном режиме;

осуществляются.

Если t или b в строке type не задается, режим преобразова­ния определяется переменной _fmode (константы O_TEXT и O_BINARY), определенную в fcntl.h и режимом, устанавливаемым по умолчанию (текстовый).

Пример:

FILE *f1, *f2;

f1=fopen(“c:\\inp.dat”,”r+b”);// открывается двоичный поток для чтения и записи

f2=fopen(“c:\\out.dat”,”w+”);// открывается текстовый поток для записи и чтения

 

2) Функция fputc() и putc() записывает символ в файл и имеет следующий прототип:

int fputc(int с, FILE *fp);

Здесь fp - указатель на файл, возвращенный функцией fopen(), с - символ для записи (переменная с имеет тип int, но используется только младший байт). При успешном завершении putc() возвращает записанный символ, в противном случае возвращается константа EOF. Она определена в файле stdio.h и имеет значение -1. Putc() оформлена в виде макроса.

3) Функция fgetc() и getc() читает символ из файла и имеет следующий прототип:

int fgetc(FILE *fp);

Здесь fp - указатель на файл, возвращенный функцией fopen(). Эта функция возвращает прочитанный символ. Соответствующее значение имеет int, но старший байт равен нулю. Если достигнут конец файла, то getc возвращает значение ЕОF. Getc() оформлена в виде макроса.

4) Функция feof() определяет конец файла при чтении двоичных данных и имеет следующий прототип:

int feof(FILE *fp);

Здесь fp - указатель на файл, возвращенный функцией fopen(). При достижении конца файла возвращается ненулевое значение, в противном случае возвращается 0.

5) Функция fputs() записывает строку символов в файл.

int fputs (char *s, FILE *fp);

При возникновении ошибки возвращается значение EOF, в противном случае ненулевое значение.

6) Функция fgets() читает строку символов из файла.

char *fgets(char *s, int n, FILE *fp);

В качестве второго параметра должно быть записано максимальное число вводимых символов плюс единица, а в качестве третьего - указатель на переменную файлового типа. Строка считывается целиком, если ее длина не превышает указанного числа символов, в противном случае функция возвращает только заданное число символов. Функция возвращает указатель на строку s при успешном завершении и константу NULL в случае ошибки либо достижения конца файла.

7) Функция puts() записывает строку символов в stdout и дополняет ее символом ‘\n’.

int puts (char *s);

8) Функция gets() читает строку символов из stdin. Если входной поток прерывается символом ‘\n’, то он отбрасывается и не попадает в строку. Вводимая строка может содержать пробелы.

char *gets(char *s);

9) Функция fprintf() выполняет те же действия, что и функция printf(), но работает с файлом. Ее отличием является то, что в качестве первого параметра задается указатель на переменную файлового типа.

10) Функция fscanf() выполняет те же действия, что и функция scanf(), но работает с файлом. Ее отличием является то, что в качестве первого параметра задается указатель на переменную файлового типа.

11) Функция fseek() позволяет выполнять перемещение указателя файла в заданную позицию и имеет следующий прототип:

int fseek(FILE *fp, long count, int access);

Здесь fp - указатель на файл, возвращенный функцией fopen(), count - номер байта относительно заданной начальной позиции, начиная с которого будет выполняться операция, access - способ задания начальной позиции.

Переменная access может принимать следующие значения:

0 - начальная позиция задана в начале файла (SEEK_SET);
1 - начальная позиция считается текущей (SEEK_CUR);
2 - начальная позиция задана в конце файла (SEEK_END).

При успешном завершении возвращается нуль, при ошибке - ненулевое значение.

Пример:

fseek(fp, 0L, SEEK_END);// последняя позиция файла

fseek(fp, -2, 1);//на два байта перед текущей позицией

12) Функция ferror() позволяет проверить правильность выполнения последней операции при работе с файлами. Имеет следующий прототип:

int ferror(FILE *fp);

В случае ошибки возвращается ненулевое значение, в противном случае возвращается нуль.

13) Функция rewind() устанавливает указатель текущей позиции в начало файла и имеет следующий прототип:

void rewind(FILE *fp);

 

14) Функция fread() предназначена для чтения блоков данных из потока. Имеет прототип:

unsigned fread(void *ptr, unsigned size, unsigned n, FILE *fp);

Она читает n элементов данных, длиной size байт каждый, из заданного входного потока fp в блок, на который указывает указатель ptr. Общее число прочитанных байтов равно произведению n*size. При успешном завершении функция fread() возвращает число прочитанных элементов данных, при ошибке - 0.

Пример:

int i;

fread(&i, sizeof(i), 1,fp);

15) Функция fwrite() предназначена для записи в файл блоков данных. Имеет прототип:

unsigned fwrite(void *ptr, unsigned size, unsigned n, FILE *fp);

Она добавляет n элементов данных, длиной size байт каждый, в заданный выходной файл fp. Данные записываются с позиции, на которую указывает указатель ptr. При успешном завершении операции функция fwrite() возвращает число записанных элементов данных, при ошибке - неверное число элементов данных.

Пример:

int i=5;

fwrite(&i, sizeof(i), 1,fp);

16) Функция fflush() сбрасывает содержимое буфера в файл.

int fflush (FILE *fp);

Если произошла ошибка возвращает EOF, в противном случае 0.

17) Функция fclose() сбрасывает буфер и закрывает указанный поток.

int fclose (FILE *fp);

Если произошла ошибка возвращает EOF, в противном случае 0.

18) Функция freopen() позволяет закрыть существующий поток и связать его с другим файлом.

FILE *freopen(char *pathname, char *type, FILE *fp);

Пример:

freopen(“c:\\out.txt”, ”w”, stdout);

………………

fclose(stdout);

19) Функция putchar() записывает символ в stdout.

int putchar(char ch);

20) Функция getchar() считывает символ из stdin.

int getchar();

 

Некоторые функции ввода-вывода для консольного терминала.

1) Функция getch() производит чтение символа с консоли (клавиатуры):

int getch();

2) Функция getche() производит чтение символа с консоли с эхо-выводом:

int getche();

3) Функция clrscr() производит очистку экрана:

void clrscr(void);

4) Функция kbhit() определяет была ли нажата клавиша:

int kbhit(void);

Функция возвращает ненулевое значение, если была нажата какая-либо клавиша и нуль в противном случае.

 

 


Дата добавления: 2015-07-12; просмотров: 49 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Именование файлов| Вступление – этикетки или не этикетки?

mybiblioteka.su - 2015-2024 год. (0.01 сек.)