/***********************************************************************
* function : replaceAll()
* argument : str - 치환 하려는 대상 문자열
source - 치환 대상
replace - 치환 값
* desc : 문자열 str 에서 source 를 replace 로 치환한다.
**********************************************************************/
char *replaceAll(char *str, const char *source, const char *replace)
{
int ARR_SIZE = 1000;
int len_str =0;
int len_source = 0;
int len_replace = 0;
int i = 0;
char *preStr = NULL;
char *nowStr = NULL;
char *result = NULL;
char *ret = NULL;
preStr = str;
nowStr = str;
len_str = strlen(str);
len_source = strlen(source);
len_replace = strlen(replace);
ret = (char*)calloc(sizeof(char), ARR_SIZE);
if(ret == NULL) return NULL;
result = ret;
while(*nowStr != '\0')
{
for(i = 0; (*(nowStr + i) == source[i]) && i < len_source; i++);
if(i == len_source)
{
memcpy(result, preStr, nowStr - preStr);
result += nowStr - preStr;
memcpy(result, replace, len_replace);
result += len_replace;
preStr = nowStr + len_source;
nowStr += i;
}
else
{
nowStr++;
}
}
memcpy(result, preStr, nowStr - preStr);
ret = (char*)realloc(ret, strlen(ret) + 1);
return ret;
}
'C, C++' 카테고리의 다른 글
리눅스 폴더 만들기(linux directory ) (0) | 2019.01.23 |
---|---|
문자열 한글 포함 Hexa 코드로 변경 (0) | 2019.01.23 |
C++ 한글 체크 (0) | 2019.01.23 |
포인트 함수 < 포인트로 함수를 호출하는 방법> (0) | 2019.01.23 |
define, macro (0) | 2019.01.23 |