Модуль ctype.h
Классификации и преобразование символов
Модуль ctype.h предоставляет стандартные функции языка C (компилятор GCC) для классификации символов и преобразования их регистра. Эти функции позволяют проверять, относится ли символ к определённой категории (например, буква, цифра, пробел), а также преобразовывать символы в верхний или нижний регистр.
Для работы с модулем ctype.h реализованы следующие функции:
// Классификация символов
int isalnum(int c);
int isalpha(int c);
int isblank(int c);
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
// Преобразование регистра
int tolower(int c);
int toupper(int c);
- Все функции принимают аргумент
cтипаint, который интерпретируется как значение символа (обычноunsigned char). Передача значений вне диапазонаunsigned charилиEOFможет привести к неопределённому поведению. - Возвращаемые значения функций классификации (
is*): ненулевое значение (true), если символ удовлетворяет условию, и 0 (false), если нет. - Функции преобразования (
tolower,toupper) возвращают преобразованный символ (типint) или входной символ, если преобразование невозможно. - Поведение функций зависит от текущей локали, установленной с помощью функции
setlocaleиз модуляlocale.h.
isalnum
Функция int isalnum(int c) проверяет, является ли символ c буквой или цифрой (a–z, A–Z, 0–9).
Параметры:
c— код символа (значение типаunsigned charилиEOF).
Возвращаемые значения:
- Ненулевое значение, если символ — буква или цифра, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = 'A';
if (isalnum(c)) {
printf("Символ '%c' является буквой или цифрой\n", c); // Ожидается: Символ 'A' является буквой или цифрой
} else {
printf("Символ '%c' не является буквой или цифрой\n", c);
}
return 0;
}
isalpha
Функция int isalpha(int c) проверяет, является ли символ c буквой (a–z, A–Z).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — буква, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = 'z';
if (isalpha(c)) {
printf("Символ '%c' является буквой\n", c); // Ожидается: Символ 'z' является буквой
} else {
printf("Символ '%c' не является буквой\n", c);
}
return 0;
}
isblank
Функция int isblank(int c) проверяет, является ли символ c пробельным символом, используемым для разделения слов (пробел или табуляция).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — пробел или табуляция, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = ' ';
if (isblank(c)) {
printf("Символ '%c' является пробельным\n", c); // Ожидается: Символ ' ' является пробельным
} else {
printf("Символ '%c' не является пробельным\n", c);
}
return 0;
}
iscntrl
Функция int iscntrl(int c) проверяет, является ли символ c управляющим (например, \n, \t, \0).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — управляющий, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = '\n';
if (iscntrl(c)) {
printf("Символ является управляющим\n"); // Ожидается: Символ является управляющим
} else {
printf("Символ не является управляющим\n");
}
return 0;
}
isdigit
Функция int isdigit(int c) проверяет, является ли символ c десятичной цифрой (0–9).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — цифра, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = '5';
if (isdigit(c)) {
printf("Символ '%c' является цифрой\n", c); // Ожидается: Символ '5' является цифрой
} else {
printf("Символ '%c' не является цифрой\n", c);
}
return 0;
}
isgraph
Функция int isgraph(int c) проверяет, является ли символ c видимым (печатаемым, за исключением пробела).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — видимый, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = '#';
if (isgraph(c)) {
printf("Символ '%c' является видимым\n", c); // Ожидается: Символ '#' является видимым
} else {
printf("Символ '%c' не является видимым\n", c);
}
return 0;
}
islower
Функция int islower(int c) проверяет, является ли символ c буквой нижнего регистра (a–z).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — буква нижнего регистра, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = 'x';
if (islower(c)) {
printf("Символ '%c' — нижний регистр\n", c); // Ожидается: Символ 'x' — нижний регистр
} else {
printf("Символ '%c' — не нижний регистр\n", c);
}
return 0;
}
isprint
Функция int isprint(int c) проверяет, является ли символ c печатаемым (включая пробел).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — печатаемый, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = ' ';
if (isprint(c)) {
printf("Символ '%c' является печатаемым\n", c); // Ожидается: Символ ' ' является печатаемым
} else {
printf("Символ '%c' не является печатаемым\n", c);
}
return 0;
}
ispunct
Функция int ispunct(int c) проверяет, является ли символ c знаком пунктуации (например, !, ,, .).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — знак пунктуации, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = '!';
if (ispunct(c)) {
printf("Символ '%c' является знаком пунктуации\n", c); // Ожидается: Символ '!' является знаком пунктуации
} else {
printf("Символ '%c' не является знаком пунктуации\n", c);
}
return 0;
}
isspace
Функция int isspace(int c) проверяет, является ли символ c пробельным (пробел, табуляция, перевод строки и т.д.).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — пробельный, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = '\t';
if (isspace(c)) {
printf("Символ является пробельным\n"); // Ожидается: Символ является пробельным
} else {
printf("Символ не является пробельным\n");
}
return 0;
}
isupper
Функция int isupper(int c) проверяет, является ли символ c буквой верхнего регистра (A–Z).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — буква верхнего регистра, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = 'Z';
if (isupper(c)) {
printf("Символ '%c' — верхний регистр\n", c); // Ожидается: Символ 'Z' — верхний регистр
} else {
printf("Символ '%c' — не верхний регистр\n", c);
}
return 0;
}
isxdigit
Функция int isxdigit(int c) проверяет, является ли символ c шестнадцатеричной цифрой (0–9, a–f, A–F).
Параметры:
c— код символа.
Возвращаемые значения:
- Ненулевое значение, если символ — шестнадцатеричная цифра, иначе 0.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = 'F';
if (isxdigit(c)) {
printf("Символ '%c' — шестнадцатеричная цифра\n", c); // Ожидается: Символ 'F' — шестнадцатеричная цифра
} else {
printf("Символ '%c' — не шестнадцатеричная цифра\n", c);
}
return 0;
}
tolower
Функция int tolower(int c) преобразует символ c в нижний регистр, если это буква верхнего регистра.
Параметры:
c— код символа.
Возвращаемые значения:
- Код символа в нижнем регистре или
c, если преобразование невозможно.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = 'A';
int res = tolower(c);
printf("Символ '%c' преобразован в '%c'\n", c, res); // Ожидается: Символ 'A' преобразован в 'a'
return 0;
}
toupper
Функция int toupper(int c) преобразует символ c в верхний регистр, если это буква нижнего регистра.
Параметры:
c— код символа.
Возвращаемые значения:
- Код символа в верхнем регистре или
c, если преобразование невозможно.
Пример использования:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = 'z';
int res = toupper(c);
printf("Символ '%c' преобразован в '%c'\n", c, res); // Ожидается: Символ 'z' преобразован в 'Z'
return 0;
}