(WinAPI) 문자열 함수(멀티바이트->유니코드->TCHAR)

IT/Programming/WinAPI 2013. 7. 8. 07:38

strcpy -> wcscpy -> _tcscpy (문자열을 복사) 

strncpy -> wcsncpy -> _tcsncpy ( 사이즈 만큼 복사) 

strlen -> wcslen -> _tcslen (문자열 길이 확인)  

strcat -> wcscat -> _tcscat (두 문자열 이어 붙이기) 

strncat -> wcsncat -> _tcsncat (사이즈 만큼 이어 붙이기) 

strcmp -> wcscmp -> _tcscmp (문자열 비교) (반환 값(-1, 0, 1)) 

strncmp -> wcsncmp? -> _tcsncmp ( 사이즈 만큼 문자열 비교) 

stricmp -> wcsicmp -> _tcsicmp (대소문자를 구별하지 않고 문자열을 비교) 

strnicmp -> wcsnicmp -> _tcsnicmp (사이즈 만큼 대소문자를 구별하지 않고 문자열을 비교)

strchr -> wcschr -> _tcschr (문자 찾기) 

strrchr -> wcsrchr -> _tcsrchr (문자 찾기 (문자열 끝에서 부터 검색)) 

strstr -> wcsstr -> _tcsstr (문자열 찾기)

strpbrk -> wcspbrk -> _tcspbrk (문자 찾기 (두번째 인수를 찾고자 하는 문자들의 집합(문자열)으로 구성)   

strtok -> wcstok -> _tcstok (문자열 자르기 (두번째 인수를 집합(문자열)으로 구성 가능)) => 해당 문자가 NULL로 치환 됨

strset -> wcsset -> _tcsset (문자 치환, 첫째 인수의 모든 문자를 두번째 인수 문자로 변경함) => "abc" -> "bbb" 

strnset -> wcsnset -> _tscnset (사이즈 만큼 문자 치환) 

strupr -> wcsupr -> _tcsupr (대문자로 치환)

strlwr -> wcslwr -> _tcslwr (소문자로 치환) 

strrev -> wcsrev -> _tcsrev (문자열 역정렬) => "가나다라마" -> "마라다나가"

 

 

출처 : http://blog.naver.com/kilsu1024/110168931552

설정

트랙백

댓글

TCHAR 문자열을 printf() 할 때 발생하는 문제점의 원인

IT/Programming/WinAPI 2013. 7. 8. 07:07

되게 간단한건데, 왜 이리 자주 까먹는지 모르겠다.. -_-;

윈도우 프로그래밍에 익숙해지지 않아서인것 같다.

 

UNICODE 문자열 abc가 저장된다고 가정하면 아래와 같이 저장이 된다.

 

'a'\0 'b'\0 'c'\0 ...  (나의 조악한 표현에 묵념을..)

 

한 바이트마다 NULL 문자가 붙는 것이 특징인데,

printf()가 UNICODE를 지원하지 않아서 당연히 문자 하나밖에 출력이 되지 않는다.

 

자세한 설명이 있는 참고 링크 : http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=169408286&qb=dGNoYXIg7Lac66Cl&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=ROFP0F5Y7vlssaXBgdRssssssth-451584&sid=UdndiHJvLDsAAFnmOeY

설정

트랙백

댓글

_IO_str_overflow_internal 에러 발생 시

IT/Programming/Solution/Tip 2013. 7. 3. 07:07

리눅스 어플리케이션에서 _IO_str_overflow_internal 에러가 발생할 때, 오버플로우에 문제 해결의 주안을 맞추게 되는데 정작 원인은 동떨어져있을 경우가 있다. 오늘 새벽에 한 4시간 정도 삽질을 한 끝에야 원인을 찾을 수 있었는데, 잘못된 캐스팅으로 인하여 동적 메모리가 제대로 할당되지 않아 dangling pointer가 생성되었고, 해당 공간에 snprintf()를 수행하여 segmentation fault가 발생했던 것이다. 웃기게도 에러 메시지가 overflow 키워드를 담고 있어 완전 고생했다. 아무리 사이즈를 넉넉하게 줘도 오버플로우가 발생하길래 내가 꿈에서 코딩을 하고 있는건지 의심이 될 정도로..

 

하나씩 메모리 덤프를 까 볼 생각을 왜 못했을까. x/x buf 를 타이핑하고 엔터를 친 순간 탄식을 하지 않을 수 없었다.

아.. ㅠㅠ

설정

트랙백

댓글

CSS를 하다보면

My Life/My Works 2013. 6. 27. 17:59

요새 일이 있어 웹 페이지를 꾸미는 작업을 하게 되었다.

 

그런데 문제는 CSS의 기술적인 문제보다는 페이지 자체를 어떻게 꾸며야할지 도저히 감이 오질 않는다. -_-;;

그래서 여기저기 인터넷을 쏘다니면서 대충 모방해볼 만한 페이지들을 찾아보고는 있는데 그래도 참 어렵다.

 

아무래도 난 정말 디자인과는 동 떨어진 사람인가보다.

'My Life > My Works' 카테고리의 다른 글

드디어 1TB 하드디스크를 구매했다.  (0) 2013.08.14
임시저장을 신뢰하지 말자..  (0) 2010.10.24
오랜만에 커널 컴파일 중..  (0) 2010.10.22

설정

트랙백

댓글

iconv 에서 다이렉션 기호 사용 시 주의해야할 점

IT/Programming/Solution/Tip 2013. 6. 27. 17:52

iconv 를 사용할 때 다이렉션('>', '>>' 따위의 꺽쇠)기호를 사용할 때, 기존의 파일명에 그대로 출력을 진행하면 해당 파일이 0byte가 되는 문제가 있다. 버그인건지 아니면 내가 무언가 잘못 이해하고 있는지는 잘 모르겠다. 이 문제 때문에 꽤 오랜시간을 고생을 했는데, 아직까지도 무엇이 원인인지는 잘 모르겠다.

 

iconv [옵션] test.txt > test.txt  이렇게 기존에 있는 파일로 출력했을 때 문제가 발생한다. test_.txt 와 같이 새로운 파일로 출력시켜야한다.

설정

트랙백

댓글