Перетворення рядка в нижній регістр

C:
Перетворення рядка в нижній регістр

Як зробити:

C не має вбудованої функції для прямого перетворення рядка в нижній регістр, на відміну від деяких мов вищого рівня. Однак, процес може бути легко реалізований за допомогою функцій стандартної бібліотеки C. Нижче наведено поетапний керівництво та приклад, що ілюструє, як перетворити рядок в нижній регістр.

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

void toLowerCase(char *str) {
    while (*str) {
        *str = tolower(*str);
        str++;
    }
}

int main() {
    char text[] = "Hello, World!";
    printf("Original: %s\n", text);

    toLowerCase(text);
    printf("Lowercase: %s\n", text);

    return 0;
}

Приклад виводу:

Original: Hello, World!
Lowercase: hello, world!

У цьому прикладі функція toLowerCase ітерує через кожен символ у вхідному рядку, перетворюючи його на відповідний нижній регістр за допомогою функції tolower з ctype.h. Модифікація виконується на місці, змінюючи оригінальний рядок.

Глибше занурення

Функція tolower, яка використовується у вищевказаному прикладі, є частиною стандартної бібліотеки C, зокрема у заголовочному файлі ctype.h. Вона працює на основі поточної локалі, але для стандартної локалі “C”, вона обробляє набір символів ASCII, де ‘A’ до ‘Z’ перетворюються на ‘a’ до ‘z’.

Історично, обробка кодування символів та перетворення регістра в C була тісно пов’язана з набором символів ASCII, це обмежувало її корисність в міжнародних або локалізованих додатках, де поширені символи поза набором ASCII. Сучасні мови програмування можуть пропонувати вбудовані методи рядків для виконання перетворення регістра, враховуючи локаль та символи Юнікоду, яких немає в C за замовчуванням.

У сценаріях, що вимагають широкомасштабної маніпуляції текстом, особливо з не ASCII символами, програмісти можуть розглядати використання бібліотек, які пропонують кращу підтримку інтернаціоналізації, таких як ICU (International Components for Unicode). Однак, для більшості додатків, що працюють з текстом ASCII, представлений підхід є ефективним і простим. Це підкреслює схильність C надавати програмістам контроль над маніпуляцією даними, хоча для цього та потрібно трохи більше зусилля порівняно з мовами вищого рівня.