итак strchr(Uppercase, c) возвращает указатель на первое вхождение или NULL. если не NULL, то возвращаем с(о_О) в противном случае что-то другое... однако, утверждение неверно в корне, поскольку функция "понижает", а не "повышает" буквы...
Автор: volvo 31.12.2007 3:17
А на что тебе ЭТА функция, можно полюбопытствовать, если есть tolower() ?
А по поводу "как работает" - то p содержит адрес БОЛЬШОЙ буквы, если от него отнять адрес начала строки Uppercase - то получишь смещение буквы в строке... Но ведь и МАЛЕНЬКАЯ буква находится во второй строке с тем же смещением, поэтому к началу Lowercase прибавляем его - получаем из большой буквы маленькую...
Автор: compiler 31.12.2007 3:20
Цитата(volvo @ 30.12.2007 22:17)
А на что тебе ЭТА функция, можно полюбопытствовать, если есть tolower() ?
учебный пример...
Автор: volvo 31.12.2007 3:22
См. выше, я написал...
Добавлено через 5 мин. Кстати, вопрос на засыпку: в чем смысл использования конструкции NULL == (что-то) вместо (что-то) == NULL, знаешь?
Автор: compiler 31.12.2007 3:35
Цитата(volvo @ 30.12.2007 22:22)
Кстати, вопрос на засыпку: в чем смысл использования конструкции NULL == (что-то) вместо (что-то) == NULL, знаешь?
нет, возможно в данной программе нужно лишиться типа? что б потом вызывающая функция сама думала что с этим делать...а == NULL создание "пустого" указателя...
Автор: volvo 31.12.2007 3:43
Ничего ты не лишишься... Просто некоторые (я не отношусь к их числу, и эту конструкцию NULL==(что-то) не использую) считают, что она поможет отыскать ошибку, если будет пропущен один знак равенства:
откомпилируется даже без Warning-ов (в частности на GCC), но вот работать будет заведомо неверно...
Автор: compiler 31.12.2007 18:44
Цитата(volvo @ 30.12.2007 22:43)
Ничего ты не лишишься... Просто некоторые (я не отношусь к их числу, и эту конструкцию NULL==(что-то) не использую) считают, что она поможет отыскать ошибку, если будет пропущен один знак равенства:
да, я это встречал. писать не (i==5), а (5==i) , но все забыл... Спасибо что напомнил!
откомпилируется даже без Warning-ов (в частности на GCC), но вот работать будет заведомо неверно...
хм.. ну тут помоему немножко другое... мы ведь сравниваем NULL с возращаемым значением, а не переменной, поэтому присвоения сдесь быть не может...
Автор: volvo 31.12.2007 19:05
Цитата
присвоения сдесь быть не может
Вот в том фрагменте, который я привел - сравнения как раз никакого нет, есть только присвоения... И если ты забудешь (то, что ты не можешь сделать присвоение вместо сравнения сознательно - это понятно) один знак равенства (что я намеренно и сделал) - то потом долго будешь искать ошибку...
Автор: compiler 31.12.2007 19:30
Цитата(volvo @ 31.12.2007 14:05)
Вот в том фрагменте ... то потом долго будешь искать ошибку...
пару дней наазад я час точно убил так:) (допустил ошибку в if)... Но в твоем фрагменте ошибку замечает компилятор, а налогично в выражение (2==3)=1; возникает (некорректная левая часть в присваивании)... Но я понял общую суть...