Библиотека 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 — локальная установка не требуется.