C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[74664] Re:Re:wcstok 문의 드립니다.
강우정 [ballkiss] 786 읽음    2017-11-17 09:01
빌더(TWx) 님이 쓰신 글 :
: 강우정 님이 쓰신 글 :
: : 안녕하세요.
: :
: : wchar_t *str = L"View.exe,1,0,&View" 라는 문자열을 wcstok로 자르려고 합니다.
: :
: : wcstok(str, L",");
: : wcstok(NULL, L",");
: : wcstok(NULL, L",");
: : ...
: :
: : 진행했을 때 예상되는 결과는
: : View.exe
: : 1
: : 0
: : &View
: : 인데요. 결과는 이상하게 나옵니다.
: :
: : View.exe
: : 1,0,&Vi
: : w
: : 이런식으로요
: :
: : 추적을 해보니
: : str이 View.exe\01,0,&Vi\0w 이런식으로 뒤쪽 영문자 e 가 \0으로 변해서 짤렸더라구요.
: : 혹시 왜 이렇게 변하는지 도움이 요청드립니다.
: :
: :
:
:
: 답변:
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     wchar_t wstr[] = L"View.exe,1,0,&View";
:     wchar_t *tk = wcstok(wstr, L",");
:
:     while (tk != NULL)
:     {
:         Memo1->Lines->Add(tk);
:         tk = wcstok(NULL, L",");
:     }
:
: }
:
: RAD 10.2 인데요. 다른 버전에선 안되나요?
:

답변 감사합니다.
저도 같은 버전이구요. 위에 소스로는 문제가 없이 실행이 되네요.

저의 다른 점을 찾아봤더니,
중간에 첫번째 자른 문자열을 복사하는 과정이 있습니다.
이 부분을 주석처리 하고 하니 잘되네요.

wcscpy(tk1, tk);

이런식으로 복사를 하고 다시 자르려고 하면 wstr 문자열이 제가 말씀드린 것처럼 잘립니다.
L"View.exe\01,0,&Vi\0w\0"

중간에 문자열 복사를 하면 이런 현상이 있을 수 있나요?



+ -

관련 글 리스트
74660 wcstok 문의 드립니다. 강우정 750 2017/11/16
74661     Re:wcstok 문의 드립니다. 빌더(TWx) 825 2017/11/16
74664         Re:Re:wcstok 문의 드립니다. 강우정 786 2017/11/17
74666             Re:Re:Re:wcstok 문의 드립니다. 빌더(TWx) 858 2017/11/17
74667                 Re:Re:Re:Re:wcstok 문의 드립니다. 강우정 797 2017/11/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.