Язык Си в примерах/Верхний регистр: различия между версиями

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 21: Строка 21:
int i;
int i;
scanf ("%s", a);
scanf ("%s", a);
for(i = 0; a[i] != 0; i++)
for(i = 0; a[i] != '\0'; i++)
if( a[i] <= 'z' && a[i] >= 'a')
if( a[i] <= 'z' && a[i] >= 'a')
a[i] += 'A' - 'a';
a[i] += 'A' - 'a';
printf ("%s", a);
printf ("%s\n", a);
return 0;
return 0;
}
}

Версия от 18:33, 19 июня 2010

Язык Си в примерах


  1. Компиляция программ
  2. Простейшая программа «Hello World»
  3. Учимся складывать
  4. Максимум
  5. Таблица умножения
  6. ASCII-коды символов
  7. Верхний регистр
  8. Скобочки
  9. Факториал
  10. Степень числа
  11. Треугольник Паскаля
  12. Корень уравнения
  13. Система счисления
  14. Сортировка
  15. Библиотека complex
  16. Сортировка на основе qsort
  17. RPN-калькулятор
  18. RPN-калькулятор на Bison
  19. Простая грамматика
  20. Задача «Расчёт сопротивления схемы»
  21. Простая реализация конечного автомата
  22. Использование аргументов командной строки
  23. Чтение и печать без использования stdio
  24. Декодирование звукозаписи в формате ADX
  25. Другие примеры

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

< Язык Си в Примерах

В следующей программе введенная пользователем строчка переводится в верхний регистр, то есть маленькие буквы становятся заглавными. Заглавные буквы и символы, не являющиеся латинскими буквами не меняются.

Обратите внимание на то, что с символами (переменными типа char) можно оперировать как с числами. В частности 'Z' -'A' есть число, равное разности ASCII кодов символов 'A' и 'Z', то есть 26 — число букв в латинском алфавите. Символы можно также сравнивать друг с другом при этом сравниваются соответствующие им ASCII коды.

 #include <stdio.h>
 #define N 100
 int main() {
    char a[N];
    int i;
    scanf ("%s", a);
    for(i = 0; a[i] != '\0'; i++)
       if( a[i] <= 'z' && a[i] >= 'a')
          a[i] += 'A' - 'a';
    printf ("%s\n", a);
    return 0;
 }

При решении практических задач функцию перевода строчки в верхний регистр писать самому не надо. Это стандартная функция, которая есть в библиотеках различных языков программирования. В библиотеке string реализованы функции strlwr и strupr, которые переводят строчки в нижний и в верхний регистр. Соответствующие функции для преобразования одного символа tolower и toupper определены в библиотеке ctype.

Примечание

Приведённая выше программа содержит потенциальную уязвимость типа «переполнение буфера».

Ниже приведена программа, которая использует функцию tolower библиотеки ctype и переводит строчку в нижний регистр.

 #include <string.h>
 #include <stdio.h>
 #include <ctype.h>
 int main() {
    int length, i;
    char string[] = "ThIs Is A sTrInG";
    length = strlen(string);
    for (i = 0; i < length; i++) 
        string[i] = tolower (string[i]);
    printf ("%s\n", string);
    return 0;
 }

См. также