C, C++

문자열 치환

슬픈달 2019. 1. 23. 09:51
반응형

/***********************************************************************
* 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