Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Linux
- Book
- django
- comic agile
- MySQL
- hadoop
- Kuala Lumpur
- France
- erlang
- web
- Malaysia
- Java
- essay
- program
- hbase
- AI
- leadership
- Python
- agile
- QT
- Programming
- programming_book
- Artificial Intelligence
- management
- ubuntu
- Italy
- Book review
- Software Engineering
- history
- RFID
Archives
- Today
- Total
문자열 치환(replace 함수 예제) 본문
원본: http://mwultong.blogspot.com/2006/10/c-string-replace-all.html
#include#include #include char *replaceAll(char *s, const char *olds, const char *news); void main(void){ char s[] = "봉숭아 학당! 봉숭아 학당! 봉숭아 학당! 봉숭아 학당!"; char *s2; printf("원본: %s\n", s); s2 = replaceAll(s, "봉숭아", "맹구"); // 에러가 있으면 NULL 을 리턴. 에러가 없으면 결과 출력 (s2 != NULL) ? printf("치환: %s\n", s2) : fputs("Replace String Error...\n", stderr); } 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; }
Comments