linux/lib/ctype.c 에 관해서..
글쓴이: oprsystem / 작성시간: 목, 2004/02/05 - 7:53오후
이 코드가 무엇을 하는지 모르겠습니다. 아시는 분은 도움주시면 감사드립니다..
[b]const unsigned char _ctype[] = { _C,_C,_C,_C,_C,_C,_C,_C, /* 0-7 */ _C,_C|_S,_C|_S,_C|_S,_C|_S,_C|_S,_C,_C, /* 8-15 */ _C,_C,_C,_C,_C,_C,_C,_C, /* 16-23 */ _C,_C,_C,_C,_C,_C,_C,_C, /* 24-31 */ _S|_SP,_P,_P,_P,_P,_P,_P,_P, /* 32-39 */ _P,_P,_P,_P,_P,_P,_P,_P, /* 40-47 */ _D,_D,_D,_D,_D,_D,_D,_D, /* 48-55 */ _D,_D,_P,_P,_P,_P,_P,_P, /* 56-63 */ _P,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U, /* 64-71 */ _U,_U,_U,_U,_U,_U,_U,_U, /* 72-79 */ _U,_U,_U,_U,_U,_U,_U,_U, /* 80-87 */ _U,_U,_U,_P,_P,_P,_P,_P, /* 88-95 */ _P,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L, /* 96-103 */ _L,_L,_L,_L,_L,_L,_L,_L, /* 104-111 */ _L,_L,_L,_L,_L,_L,_L,_L, /* 112-119 */ _L,_L,_L,_P,_P,_P,_P,_C, /* 120-127 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 128-143 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 144-159 */ _S|_SP,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P, /* 160-175 */ _P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P,_P, /* 176-191 */ _U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U,_U, /* 192-207 */ _U,_U,_U,_U,_U,_U,_U,_P,_U,_U,_U,_U,_U,_U,_U,_L, /* 208-223 */ _L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L,_L, /* 224-239 */ _L,_L,_L,_L,_L,_L,_L,_P,_L,_L,_L,_L,_L,_L,_L,_L}; /* 240-255 */[/b]
Forums:
[code:1]/* from ctype.h */#define _U
즉 ascii영역 전체에 대해 flag를 지정해 놓은 배열입니다.
/***********************
* while(1) sleep(INFINITE);
***********************/
답변 진심으로 감사 드립니다.꼬리에 꼬리를 무는 질문은 참으로 좋지
답변 진심으로 감사 드립니다.
꼬리에 꼬리를 무는 질문은 참으로 좋지 아니하지만
하나더 드는 의문의 있습니다.
ASCII 하나에 1Byte 씩 할당되었다면, 어디에 쓸려고 저리 했는지도 궁금하고,저 괴상한 글자는 무엇인지도 궁금합니다.
황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을
지금 보니 괴상한글자가 아니라 특정한 패턴이 있는거 같습니다.or
지금 보니 괴상한글자가 아니라 특정한 패턴이 있는거 같습니다.
or 연산한것도 보이고..
더 궁금해 지는군요..
황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을
_U가 지정된 글자는 대문자라는 뜻입니다. 그럼 그 글자는 isupper
_U가 지정된 글자는 대문자라는 뜻입니다. 그럼 그 글자는 isupper() 매크로에 넣으면 결과가 1(참)로 나오겠죠? _L은 소문자이고, _D는 숫자, 기타 등등...
한국 BSD 사용자 포럼
[quote="바람돌이"]지금 보니 괴상한글자가 아니라 특정한 패턴이 있
우선 이부분에서.. 몇가지 매크로를 만들었구요..
00000001 0x01 /* upper */
00000010 0x02 /* lower */
00000100 0x04 /* digit */
00001000 0x08 /* cntrl */
00010000 0x10 /*punct */
00100000 0x20 /* white space (space / lf /tab ) */
01000000 0x40 /* hex digit */
10000000 0x80 /* hard space (0x20) */
왜 저런 숫자를 사용했는지는 2진수로 바꿔보면 알 수 있습니다 ;)
그리고 여기서 asc ii 코드 0~255까지의 값에 대해.. 어떤 것들에 속하는지를
미리 정의해 둔 걸로 보이는군요 :D
흠흠 만만한 한 줄을 예로 보면요 ;)
_P,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L, /* 96-103 */
97~122까지는 abcdefgh...z 가 매핑되어 있습니다..
abcdef 까지는.. 소문자이고.. hex에 사용될 수 있는 글자겠죠..?
그럼 _L (lower) 와.. _H (hex) 이 두가지 속성임을 말해줘야겠군요 ;)
흠 실제로도 _L | _X 란 값을 가지고 있군요.. =3=33
그리고 103번 값은 .. g가 되기 때문에.. hex속성은 갖지 못했군요..
나머지도 비슷하게 보심되겠습니다 ;)
여기서도 만만한 몇가지를 ;)
islower(c) 라면.. _L 속성이 세팅되어 있는지를 체크해보면 되겠군요 ;)
그렇다면.. (c&_L) 을 해보면 알 수 있겠군요.. 나머지도 다 비슷한 식이니
잠깐만 생각하면 어떤 식인지 알 수 있을거 같군요 :D
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
아. .이제 이해가 됩니다.. 감사합니다.
아. .이제 이해가 됩니다.. 감사합니다.
황혼보다 어두운 자여
내 몸에 흐르는 피보다 더 붉은 자여
시간의 흐름 속에 파뭍힌 위대한 그대의 이름을 걸고 나 여기서 어둠에 맹세하노라
우리 앞을 가로막고 있는 모든 어리석은 자 들에게
나와 그대의 힘을
위대한 파멸의 힘을 보여줄 것을
댓글 달기