Написать аналог функции UpperCase - C (СИ)
Формулировка задачи:
Задали задачку: написать аналог функции UpperCase (в большие должны превращаться только латинские буквы).
Может кто-нибудь помочь с этим?
Решение задачи: «Написать аналог функции UpperCase»
textual
Листинг программы
#include <stdio.h>
int UpperCase(int ch) {
return (('a' <= ch) && (ch <= 'z')) ? ch - 32 : ch;
}
char* Upper(char* text) {
char* p = text;
for (; *p; ++p) {
*p = UpperCase(*p);
}
return text;
}
int main() {
char text[256];
printf("text: ");
fgets(text, sizeof(text), stdin);
printf("%s\n", Upper(text));
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки.
- Определение функции
UpperCase, которая принимает целочисленный аргументchи возвращает целочисленное значение. Функция проверяет, является ли символchстрочной буквой английского алфавита, и если это так, то вычитает из него 32 для получения заглавной буквы, в противном случае возвращает исходное значение символа. - Определение функции
Upper, которая принимает указатель на строкуtextв качестве аргумента и возвращает указатель на эту же строку. В функции используется циклfor, который проходит по каждому символу строкиtext. Если символ является строчной буквой, то он преобразуется в заглавную с помощью функцииUpperCaseи записывается обратно в строку. - Определение функции
main. В функции создается массив символовtextразмером 256, затем считывается строка с помощью функцииfgets. Далее вызывается функцияUpper, передавая ей в качестве аргумента считанную строкуtext. Результат работы функцииUpperвыводится на экран с помощью функцииprintf. - Входные данные для функции
mainне определены. - Выходные данные для функции
main— преобразованная в верхний регистр строка, которая выводится на экран.