Модуль 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;
}