Создание утилит для символов
Практические примеры
«Создание утилит для символов» — бесплатный урок C Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 4 уроков всего.
Объединение полученных знаний
Теперь Вы можете создавать небольшие практические утилиты для работы с символами, объединяя арифметику над char, библиотеку ctype и циклы по строкам.
Давайте напишем несколько распространённых вспомогательных функций.
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c = 'g';
printf("Upper: %c\n", toupper(c));
return 0;
}Подсчёт гласных
Счётчик гласных проверяет каждый символ на принадлежность к набору a, e, i, o, u в любом регистре.
#include <stdio.h>
#include <ctype.h>
int count_vowels(const char *s) {
int n = 0;
for (int i = 0; s[i]; i++) {
char c = tolower(s[i]);
if (c=='a'||c=='e'||c=='i'||c=='o'||c=='u') n++;
}
return n;
}
int main(void) {
printf("%d\n", count_vowels("Education"));
return 0;
}Разворот строки
Чтобы развернуть строку на месте, меняйте местами символы с обоих концов, двигаясь к середине.
#include <stdio.h>
#include <string.h>
int main(void) {
char s[] = "hello";
int n = strlen(s);
for (int i = 0; i < n / 2; i++) {
char tmp = s[i];
s[i] = s[n-1-i];
s[n-1-i] = tmp;
}
printf("%s\n", s);
return 0;
}Проверка палиндрома
Палиндром читается одинаково слева направо и справа налево. Сравнивайте симметричные позиции, пока они не встретятся.
#include <stdio.h>
#include <string.h>
int is_palindrome(const char *s) {
int i = 0, j = strlen(s) - 1;
while (i < j) {
if (s[i] != s[j]) return 0;
i++; j--;
}
return 1;
}
int main(void) {
printf("%d\n", is_palindrome("level"));
printf("%d\n", is_palindrome("world"));
return 0;
}Переключение регистра
Переключатель регистра преобразует заглавные буквы в строчные и наоборот, оставляя остальные символы без изменений.
#include <stdio.h>
#include <ctype.h>
int main(void) {
char s[] = "Hello World";
for (int i = 0; s[i]; i++) {
if (isupper(s[i])) s[i] = tolower(s[i]);
else if (islower(s[i])) s[i] = toupper(s[i]);
}
printf("%s\n", s);
return 0;
}Удаление нецифровых символов
Оставляйте в строке только цифры — это, например, полезно при очистке номеров телефонов.
#include <stdio.h>
#include <ctype.h>
int main(void) {
char *s = "(555) 123-4567";
for (int i = 0; s[i]; i++) {
if (isdigit((unsigned char)s[i])) putchar(s[i]);
}
putchar('\n');
return 0;
}Ручная реализация atoi
Преобразуйте строку с числом в целое число, накапливая каждую цифру: умножайте текущую сумму на 10 и прибавляйте значение цифры.
#include <stdio.h>
#include <ctype.h>
int my_atoi(const char *s) {
int n = 0;
for (int i = 0; isdigit((unsigned char)s[i]); i++) {
n = n * 10 + (s[i] - '0');
}
return n;
}
int main(void) {
printf("%d\n", my_atoi("427") + 3);
return 0;
}Подсчёт слов
Подсчитывайте слова, обнаруживая переход от пробельного символа к непробельному.
#include <stdio.h>
#include <ctype.h>
int main(void) {
char *s = "the quick brown fox";
int words = 0, in_word = 0;
for (int i = 0; s[i]; i++) {
if (isspace((unsigned char)s[i])) in_word = 0;
else if (!in_word) { in_word = 1; words++; }
}
printf("words = %d\n", words);
return 0;
}Написание слов с заглавной буквы
Делайте первую букву каждого слова заглавной, переводя в верхний регистр любую букву, которая следует за пробельным символом или находится в начале строки.
#include <stdio.h>
#include <ctype.h>
int main(void) {
char s[] = "hello there friend";
int start = 1;
for (int i = 0; s[i]; i++) {
if (isspace((unsigned char)s[i])) start = 1;
else { if (start) s[i] = toupper(s[i]); start = 0; }
}
printf("%s\n", s);
return 0;
}Шифр ROT13
ROT13 сдвигает каждую букву на 13 позиций, переходя в начало после конца алфавита. Двойное применение восстанавливает исходный текст.
#include <stdio.h>
#include <ctype.h>
int main(void) {
char s[] = "Hello";
for (int i = 0; s[i]; i++) {
char c = s[i];
if (isupper(c)) s[i] = 'A' + (c - 'A' + 13) % 26;
else if (islower(c)) s[i] = 'a' + (c - 'a' + 13) % 26;
}
printf("%s\n", s);
return 0;
}Частота появления символа
Подсчитайте, сколько раз определённый символ встречается в строке, используя простой цикл и сравнение.
#include <stdio.h>
int main(void) {
char *s = "mississippi";
char target = 's';
int count = 0;
for (int i = 0; s[i]; i++) {
if (s[i] == target) count++;
}
printf("'%c' appears %d times\n", target, count);
return 0;
}Быстрая проверка
Проверьте свои навыки создания утилит для работы с символами.
Итоги
Вы создали практические утилиты для работы с символами:
- Для подсчёта гласных, слов и частоты появления символов.
- Для разворота строк и проверки палиндромов.
- Для переключения регистра и написания слов с заглавной буквы.
- Для ручной реализации
atoiи шифра ROT13.
Часто задаваемые вопросы
Урок «Создание утилит для символов» бесплатный?
Да — полный текст урока «Создание утилит для символов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 4 уроков всего.
Чему я научусь в уроке «Создание утилит для символов»?
Практические примеры Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C Academy?
Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Создание утилит для символов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C Academy?
Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Символы как целые числа
- Библиотека ctype
- Чтение символов
- Создание утилит для символов