0Pricing
C Academy · Урок

Библиотека ctype

isdigit, isalpha, toupper

«Библиотека ctype» — бесплатный урок C Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 4 уроков всего.

Что такое ctype.h

Заголовочный файл <ctype.h> предоставляет функции для классификации и преобразования символов.

Благодаря ему Вам не нужно запоминать диапазоны ASCII и писать ручные сравнения.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("Is 'A' alpha? %d\n", isalpha('A'));
    return 0;
}

isdigit

isdigit(c) возвращает ненулевое значение, если c — цифра '0'-'9', и 0 в противном случае.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isdigit('7') = %d\n", isdigit('7'));
    printf("isdigit('x') = %d\n", isdigit('x'));
    return 0;
}

isalpha

isalpha(c) возвращает ненулевое значение, если c — буква, заглавная или строчная.

Для цифр и символов возвращается 0.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isalpha('G') = %d\n", isalpha('G'));
    printf("isalpha('3') = %d\n", isalpha('3'));
    return 0;
}

isalnum и isspace

isalnum(c) возвращает истинное значение для букв и цифр. isspace(c) возвращает истинное значение для пробельных символов, таких как пробел, табуляция и символ новой строки.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isalnum('9') = %d\n", isalnum('9'));
    printf("isspace(' ') = %d\n", isspace(' '));
    printf("isspace('a') = %d\n", isspace('a'));
    return 0;
}

isupper и islower

isupper(c) проверяет, является ли символ заглавной буквой, а islower(c) — строчной.

Эти функции удобны перед преобразованием регистра.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("isupper('A') = %d\n", isupper('A'));
    printf("islower('A') = %d\n", islower('A'));
    return 0;
}

ispunct

ispunct(c) возвращает ненулевое значение для печатных знаков пунктуации, таких как !, ? и ,, которые не являются буквами, цифрами или пробелами.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("ispunct('!') = %d\n", ispunct('!'));
    printf("ispunct('a') = %d\n", ispunct('a'));
    return 0;
}

toupper

toupper(c) возвращает заглавный вариант буквы. Если c не является строчной буквой, функция возвращает c без изменений.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("%c\n", toupper('h'));
    printf("%c\n", toupper('5'));
    return 0;
}

tolower

tolower(c) возвращает строчный вариант заглавной буквы или оставляет символ без изменений, если он не является заглавным.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    printf("%c\n", tolower('H'));
    printf("%c\n", tolower('z'));
    return 0;
}

Классификация строки

Пройдите по строке в цикле и используйте функции ctype, чтобы подсчитать цифры и буквы.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char *s = "abc123";
    int letters = 0, digits = 0;
    for (int i = 0; s[i]; i++) {
        if (isalpha(s[i])) letters++;
        if (isdigit(s[i])) digits++;
    }
    printf("letters=%d digits=%d\n", letters, digits);
    return 0;
}

Перевод всей строки в верхний регистр

Объедините toupper с циклом, чтобы преобразовать всю строку в верхний регистр, символ за символом.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char s[] = "Hello";
    for (int i = 0; s[i]; i++) {
        s[i] = toupper(s[i]);
    }
    printf("%s\n", s);
    return 0;
}

Передавайте int, а не отрицательный char

Функции ctype принимают значение типа int, которое должно быть представимо как unsigned char или быть равно EOF.

Прямая передача отрицательного char приводит к неопределённому поведению. Если Вы не уверены, выполните приведение к unsigned char.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char c = 'Q';
    int result = isalpha((unsigned char)c);
    printf("safe isalpha = %d\n", result);
    return 0;
}

Быстрая проверка

Проверьте свои знания библиотеки ctype.

Итоги

Библиотека <ctype.h> позволяет Вам:

  • Классифицировать символы с помощью isdigit, isalpha, isalnum, isspace, ispunct, isupper, islower.
  • Преобразовывать символы с помощью toupper и tolower.
  • Всегда передавать значения, приведённые к типу unsigned char, чтобы избежать неопределённого поведения.

Часто задаваемые вопросы

Урок «Библиотека ctype» бесплатный?

Да — полный текст урока «Библиотека ctype» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 4 уроков всего.

Чему я научусь в уроке «Библиотека ctype»?

isdigit, isalpha, toupper Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C Academy?

Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Библиотека ctype»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C Academy?

Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Символы как целые числа
  2. Библиотека ctype
  3. Чтение символов
  4. Создание утилит для символов
← Назад к C Academy