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