Функции проверки класса литер 


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



ЗНАЕТЕ ЛИ ВЫ?

Функции проверки класса литер



 

Головной файл <ctype.h> предоставляет функции, которые позволяют определить, принадлежит ли литера определенному классу. Параметр каждой из этих функций имеет тип int и должен быть либо значением unsigned char, приведенным к int, либо значением EOF; возвращаемое значение тоже имеет тип int. Функции возвращают ненулевое значение (“истину”), если аргумент принадлежит указанному классу литер, и нуль (“ложь”) – в противном случае.

 

int isupper (int c) буква верхнего регистра

int islower (int c) буква нижнего регистра

int isalpha (int c) isupper(c) или islower(c) истины

int isdigit (int c) десятичная цифра

int isalnum (int c) isalpha (c) или isdigit (c) истины

int isxdigit (int c) шестнадцатиричная цифра

int isspace (int c) пробел, новая-строка, возврат-каретки, табуляция

int isgraph (int c) печатаемая литера, кроме пробела

int isprint (int c) печатаемая литера, включая пробел

 

Кроме этих функций в файле есть две функции, выполняющие преобразование букв из одного регистра в другой.

 

int tolower (int c)

если с – буква верхнего регистра, то tolower(c) выдаст эту букву на нижнем регистре; в противном случае она вернет c.

 

int toupper (int c)

если с – буква нижнего регистра, то toupper(c) выдаст эту букву на верхнем регистре; в противном случае она вернет c.

 

 

Ввод-вывод

Поток - это источник или получатель данных; его можно связать с диском или каким-либо другим внешним устройством. Библиотека поддерживает два вида потоков: текстовый и бинарный.

Текстовый поток - это последовательность строк. Каждая строка имеет нуль или более литер и заканчивается литерой ‘\n’.

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

В UNIXе эти виды потоков не различаются.

Поток соединяется с файлом или устройством посредством его открытия; эта связь разрывается при закрытии потока. Открытие файла возвращает указатель на объект типа FILE, который содержит всю информацию, необходимую для управления этим потоком. Если не возникает двусмысленности, далее будем использовать термины «файловый указатель» и «поток» как равнозначные.

Когда программа начинает работу, уже открыты три потока: stdin, stdout и stderr.

Все приведенные ниже функции, связанные с вводом-выводом, определены в головном файле <stdio.h>.

 

 

Операции над файлами

FILE *fopen (const char *filename, const char* mode)

функция fopen открывает файл с заданным именем и возвращает указатель на файл или NULL, если файл не удалось открыть.

 

Допустимые значения режима:

 

«r» текстовый файл открывается для чтения

«w» текстовый файл создается для записи; старое содержимое (если оно было) удаляется

«a» текстовый файл открывается или создается для записи в конец файла

«r+» текстовый файл открывается для исправления (т.е. для чтения и записи)

«a+» текстовый файл создается или открывается для исправления уже существующей информации и добавления новой в конец файла

Режим «исправления» позволяет читать и писать в один и тот же файл; при переходах от операции чтения к операции записи и обратно нужно вызывать функцию fflush либо функцию позиционирования файла. Если значение режима дополнить буквой b (например, «rb» или «a+b»), то это будет означать, что файл бинарный.

FILE *freopen (const char *filename, const char* mode, FILE *stream)

функция freopen открывает файл с указанным режимом и связывает его с потоком stream. Она возвращает stream или, в случае ошибки, NULL. Обычно функция freopen используется для замены файлов, связанных с stdin, stdout или stderr, другими файлами.

 

int fflush (FILE *stream)

если функцию fflush применить к потоку вывода, то происходит дозапись всех оставшихся на буфере (еще не записанных) данных. Для потока ввода эта функция не определена. Функция возвращает EOF, если во время записи возникла ошибка, и нуль в противном случае. Обращение вида fflush (NULL) выполняет указанные операции для всех потоков вывода.

 

int fclose (FILE *stream)

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

 

int remove(const char *filename)

функция remove удаляет файл с указанным именем; последующая попытка открыть файл с таким именем вызовет ошибку. Возвращает ненулевое значение в случае неудачной попытки.

 

int rename(const char *oldname, const char* newname)

функция rename заменяет старое имя файла oldname новым newname; если попытка изменить имя оказалась неудачной, то возвращает ненулевое значение, в противном случае - нуль.

Форматный вывод

Функции форматного вывода осуществляют вывод информации в соответствии с форматом.

 

int fprintf (FILE* stream, const char* format,...)

функция преобразует и пишет вывод в поток stream под управлением формата format. Возвращаемое значение - число записанных литер или, в случае ошибки, отрицательное значение.

Строка формата может содержать обычные литеры, которые копируются в выводной поток, и спецификации преобразования, которые вызывают преобразование и печать значений других аргументов в том порядке, как они перечислены. Каждая спецификация преобразования начинается символом % и заканчивается литерой-спецификатором преобразования. Между % и литерой-спецификатором могут быть расположены символы управления печатью (в том порядке, в каком они перечислены ниже):

 

* флаги

- указывает, что преобразованное значение аргумента должно быть прижато к левому краю поля;

+ предписывает указывать знак числа;

пробел если первая литера - не знак, то числу должен предшествовать пробел;

0 указывает, что числа должны дополняться ведущими нулями до всей ширины поля;

# указывает на одну из следующих форм вывода: для о первой цифрой должен быть 0; для х или Х ненулевому результату должны предшествовать 0х или 0Х; для e, E, f, g и G вывод всегда должен содержать десятичную точку; для g и G хвостовые нули не отбрасываются.

* число, определяющее минимальную ширину поля. Преобразованный аргумент будет напечатан в поле, размер которого не меньше указанной ширины. Если число литер, необходимых для представления значения аргумента, больше указанной ширины поля, то значение будет напечатано в поле большего размера; если меньше - поле будет дополнено слева (или справа, если число прижимается к левому краю). Поле дополняется пробелами (или нулями, если присутствует флаг дополнения нулями).

* точка, отделяющая указатель ширины поля от указателя точности.

* число, задающее точность, которое определяет максимальное количество литер, печатаемых из строки, или количество цифр после десятичной точки в преобразованиях e, E или f, или количество значащих цифр для g- или G-преобразования, или минимальное количество цифр при печати целого (до необходимой ширины поля число дополняется ведущими нулями).

* модификаторы h, l или L. Литера h указывает, что соответствующий аргумент должен печататься как short или unsigned short; литера l - как long или unsigned long; литера L - как long double.

 

 

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 408; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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