출처 : http://mwultong.blogspot.com/2006/10/c-string-replace-all.html
char *replaceAll(char *s, const char *olds, const char *news)
{
char *result, *sr;
size_t i, count = 0;
size_t oldlen = strlen(olds); if (oldlen < 1) return s;
size_t newlen = strlen(news);
if (newlen != oldlen) {
for (i = 0; s[i] != '\0';) {
if (memcmp(&s[i], olds, oldlen) == 0) count++, i += oldlen;
else i++;
}
} else i = strlen(s);
result = (char *) malloc(i + 1 + count * (newlen - oldlen));
if (result == NULL) return NULL;
sr = result;
while (*s) {
if (memcmp(s, olds, oldlen) == 0) {
memcpy(sr, news, newlen);
sr += newlen;
s += oldlen;
} else *sr++ = *s++;
}
*sr = '\0';
return result;
}
'C/C++' 카테고리의 다른 글
[스크랩] C언어 가변인자(가변파라미터)를 사용해보자 (0) | 2014.06.11 |
---|---|
wchar_t <-> char (0) | 2013.05.30 |
[C++]OpenGL, OpenCV를 이용하여, PNG파일 불러오기(초간단) (0) | 2013.04.29 |
포인터 (0) | 2012.03.28 |
scanf() newline 문제 (1) | 2012.03.20 |