![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
compiler |
![]()
Сообщение
#1
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Добрый день!
вот есть функция, которая большие буквы привращает в маленькии, но как она это делает? #include <string.h> заранее благодарен. итак strchr(Uppercase, c) возвращает указатель на первое вхождение или NULL. если не NULL, то возвращаем с(о_О) в противном случае что-то другое... однако, утверждение неверно в корне, поскольку функция "понижает", а не "повышает" буквы... Сообщение отредактировано: compiler - 30.12.2007 23:09 -------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
А на что тебе ЭТА функция, можно полюбопытствовать, если есть tolower() ?
А по поводу "как работает" - то p содержит адрес БОЛЬШОЙ буквы, если от него отнять адрес начала строки Uppercase - то получишь смещение буквы в строке... Но ведь и МАЛЕНЬКАЯ буква находится во второй строке с тем же смещением, поэтому к началу Lowercase прибавляем его - получаем из большой буквы маленькую... Сообщение отредактировано: volvo - 30.12.2007 23:21 |
compiler |
![]()
Сообщение
#3
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
А на что тебе ЭТА функция, можно полюбопытствовать, если есть tolower() ? учебный пример...-------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
См. выше, я написал...
Добавлено через 5 мин. Кстати, вопрос на засыпку: в чем смысл использования конструкции NULL == (что-то) вместо (что-то) == NULL, знаешь? ![]() |
compiler |
![]()
Сообщение
#5
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Кстати, вопрос на засыпку: в чем смысл использования конструкции NULL == (что-то) вместо (что-то) == NULL, знаешь? нет, возможно в данной программе нужно лишиться типа? что б потом вызывающая функция сама думала что с этим делать...а == NULL создание "пустого" указателя...![]() Сообщение отредактировано: compiler - 30.12.2007 23:37 -------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
![]() return NULL = (p = strchr(Uppercase, c)) ? c : *(Lowercase + (p - Uppercase)); компилироваться не станет, в то время как return ((p = strchr(Uppercase, c)) = NULL) ? c : *(Lowercase + (p - Uppercase)); откомпилируется даже без Warning-ов (в частности на GCC), но вот работать будет заведомо неверно... Сообщение отредактировано: volvo - 30.12.2007 23:44 |
compiler |
![]()
Сообщение
#7
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
![]() ...в то время как
хм.. ну тут помоему немножко другое... мы ведь сравниваем NULL с возращаемым значением, а не переменной, поэтому присвоения сдесь быть не может...return ((p = strchr(Uppercase, c)) = NULL) ? c : *(Lowercase + (p - Uppercase));откомпилируется даже без Warning-ов (в частности на GCC), но вот работать будет заведомо неверно... -------------------- Спасибо!
Удачи! |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата присвоения сдесь быть не может Вот в том фрагменте, который я привел - сравнения как раз никакого нет, есть только присвоения... И если ты забудешь (то, что ты не можешь сделать присвоение вместо сравнения сознательно - это понятно) один знак равенства (что я намеренно и сделал) - то потом долго будешь искать ошибку... |
compiler |
![]()
Сообщение
#9
|
Человек ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: ![]() ![]() ![]() |
Вот в том фрагменте ... то потом долго будешь искать ошибку... пару дней наазад я час точно убил так:) (допустил ошибку в if)... Но в твоем фрагменте ошибку замечает компилятор, а налогично в выражение (2==3)=1; возникает (некорректная левая часть в присваивании)... Но я понял общую суть...-------------------- Спасибо!
Удачи! |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 10:45 |