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 |
Tags
- management
- django
- Java
- RFID
- programming_book
- psychology
- agile
- hadoop
- Book review
- France
- Python
- web
- ubuntu
- MySQL
- Programming
- Linux
- Book
- Spain
- Malaysia
- hbase
- essay
- Italy
- erlang
- Software Engineering
- history
- QT
- comic agile
- leadership
- Kuala Lumpur
- program
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