Алгоритмы обработки символьной информации - C (СИ)
Формулировка задачи:
Текст, не содержащий собственных имен и сокращений набран полностью прописными русскими буквами. Заменить все прописные буквы, кроме букв, стоящих в начале фразы, строчными буквами
Решение задачи: «Алгоритмы обработки символьной информации»
textual
Листинг программы
#include <stdio.h>
#include <Windows.h>
void string_edit(char str[], int str_length);
int main() {
char line[256];
int i;
fgets(line, sizeof(line), stdin);
string_edit(line, strlen(line));
printf("%s", line);
system("pause");
return 0;
}
void string_edit(char str[], int str_length) {
int i;
for (i = 1; i < str_length; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] += 32;
}
}
}
Объяснение кода листинга программы
- Подключение необходимых библиотек
В данном случае используются две библиотеки: стандартная библиотека языка C
stdio.hдля работы с консолью ввода-вывода и библиотекаWindows.h, которая предоставляет функции для работы с операционной системой Windows. - Определение функции
string_edit, которая будет выполнять редактирование строки Функция принимает два аргумента: строкуstrи её длинуstr_length. - Считывание строки с помощью
fgetsВ основной функцииmainсчитывается строка из стандартного ввода с помощью функцииfgets. - Вызов функции
string_editРезультат работы функцииstring_editне используется, поэтому в данном коде она просто вызывается без сохранения результата. - Вывод строки на экран с помощью
printfПосле редактирования строки она выводится на экран с помощью функцииprintf. - Ожидание нажатия клавиши с помощью
system(pause)В конце программы вызывается функцияsystem, которая ожидает нажатия клавиши. - Редактирование строки в функции
string_editВнутри функцииstring_editпроисходит проход по всем символам строки, начиная со второго (i=1). - Проверка символа на принадлежность к регистру
Если символ больше или равен 'A' и меньше или равно 'Z', то он преобразуется в нижний регистр с помощью операции инкремента
str[i] += 32. - Проход по всем символам строки до достижения конца строки
Цикл
forвыполняется до тех пор, пока не будет достигнут конец строки (i<str_length).