UINT Replace( LPTSTR target, LPCTSTR source, LPCTSTR find, LPCTSTR replace )
{
UINT i, nCount=0;
BOOL bFind;
LPCTSTR ps, pf;
LPTSTR buf=NULL, pt = target;
size_t nLenSrc = _tcslen( source );
buf = new TCHAR[nLenSrc+1];
if ( buf == NULL )
return NULL;
_tcsncpy( buf, source, nLenSrc );
buf[nLenSrc] = 0;
for(ps=buf; *ps; ps++)
{
if ( find[0] == *ps )
{
bFind = TRUE;
for(pf=find+1, i=1; *pf; pf++, i++)
{
if ( *pf != ps[i] )
{
bFind = FALSE;
break;
}
}
// 찾았다!
if ( bFind )
{
for(pf=replace; *pf; pf++)
*(pt++) = *pf;
ps += (--i);
nCount++;
continue;
}
}
*(pt++) = *ps;
}
*pt = 0;
delete[] buf;
return nCount;
}
{
UINT i, nCount=0;
BOOL bFind;
LPCTSTR ps, pf;
LPTSTR buf=NULL, pt = target;
size_t nLenSrc = _tcslen( source );
buf = new TCHAR[nLenSrc+1];
if ( buf == NULL )
return NULL;
_tcsncpy( buf, source, nLenSrc );
buf[nLenSrc] = 0;
for(ps=buf; *ps; ps++)
{
if ( find[0] == *ps )
{
bFind = TRUE;
for(pf=find+1, i=1; *pf; pf++, i++)
{
if ( *pf != ps[i] )
{
bFind = FALSE;
break;
}
}
// 찾았다!
if ( bFind )
{
for(pf=replace; *pf; pf++)
*(pt++) = *pf;
ps += (--i);
nCount++;
continue;
}
}
*(pt++) = *ps;
}
*pt = 0;
delete[] buf;
return nCount;
}
반응형
'Dev > C, C++' 카테고리의 다른 글
소스상에서 lib링크 하기 (0) | 2006.07.07 |
---|---|
socket 타임아웃처리 (0) | 2006.07.07 |
UTF8, 유니코드, 아스키 파일의 구별 (0) | 2004.01.03 |
항상 위 효과 내기 (0) | 2003.07.18 |
문자열 분할시, 특정 번째 문자열 얻기 (0) | 2003.07.18 |