IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> lower , Си, неясный код
сообщение
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Добрый день!
вот есть функция, которая большие буквы привращает в маленькии, но как она это делает?
#include <string.h>
int lower(int c)
{
char *Uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *Lowercase = "abcdefghijklmnopqrstuvwxyz";
char *p = NULL;

return NULL == (p = strchr(Uppercase, c)) ? c : *(Lowercase + (p - Uppercase));
}

заранее благодарен.

итак strchr(Uppercase, c) возвращает указатель на первое вхождение или NULL. если не NULL, то возвращаем с(о_О) в противном случае что-то другое... однако, утверждение неверно в корне, поскольку функция "понижает", а не "повышает" буквы...

Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






А на что тебе ЭТА функция, можно полюбопытствовать, если есть tolower() ?

А по поводу "как работает" - то p содержит адрес БОЛЬШОЙ буквы, если от него отнять адрес начала строки Uppercase - то получишь смещение буквы в строке... Но ведь и МАЛЕНЬКАЯ буква находится во второй строке с тем же смещением, поэтому к началу Lowercase прибавляем его - получаем из большой буквы маленькую...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 0:22
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name