в скорости получается вот почему:
Выигрыш в скорости получается вот почему: если мы определим
#define isalpha(c) (((c) >= 'a' && (c) <= 'z') \ ((c) >= 'A' && (c) <= 'Z'))
то этот оператор состоит из 7 операций. Если же мы используем isalpha из <ctype.h>
(как определено выше) - мы используем только две операции: индексацию и проверку битовой маски &. Операции _ctype+1 и _U|_L вычисляются до констант еще при компиляции, и поэтому не вызывают генерации машинных команд.
Определенные выше toupper и tolower работают верно лишь в кодировке ASCII, в которой все латинские буквы расположены подряд и по алфавиту. Обратите внимание, что tolower имеет смысл применять только к большим буквам, а toupper - только к маленьким:
if( isupper(c) ) c = tolower(c);
Существует еще черезвычайно полезный макрос isspace(c), который можно было бы определить как
#define isspace(c) (c==' ' c=='\t'c=='\f' \ c=='\n'c=='\r') или
#define isspace(c) (strchr(" \t\f\n\r",(c)) != NULL)
На самом деле он, конечно, реализован через флаги в _ctype[]. Он используется для определения символов-пробелов, служащих заполнителями промежутков между словами
текста.
Есть еще два нередко используемых макроса: isprint(c), проверяющий, является ли c ПЕЧАТНЫМ символом, т.е. имеющим изображение на экране; и iscntrl(c), означающий, что символ c является управляющим, т.е. при его выводе на терминал ничего не изобразится, но терминал произведет некоторое действие, вроде очистки экрана или перемещения курсора в каком-то направлении. Они нужны, как правило, для отображения управляющих ("контроловских") символов в специальном печатном виде, вроде ^A для кода '\01'.
Задание: исследуйте кодировку и <ctype.h> на вашей машине. Напишите функцию лексикографического сравнения букв и строк.
Указание: пусть буквы имеют такие коды (это не соответствует реальности!):
буква: а б в г д е код: 1 4 2 5 3 0 нужно: 0 1 2 3 4 5
Тогда идея функции Ctou перекодировки к упорядоченному алфавиту такова:
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий