Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <string.h>
- size_t replace(const char *src, char *dst, const char *pattern, const char *subs)
- {
- const char *tail, *head;
- int hits = 0;
- size_t pattern_len, subs_len;
- if (!dst) {
- head = src;
- pattern_len = strlen(pattern);
- while(head = strstr(head, pattern)) {
- hits++;
- head += pattern_len;
- }
- return (hits ? strlen(src) + hits * (strlen(subs) - pattern_len) : 0);
- }
- tail = head = src;
- pattern_len = strlen(pattern);
- subs_len = strlen(subs);
- while (head = strstr(head, pattern)) {
- strncpy(dst, tail, head - tail);
- dst = dst + (head - tail);
- strcpy(dst, subs);
- dst = dst + subs_len;
- head += pattern_len;
- tail = head;
- }
- strcpy(dst, tail);
- return 0;
- }
- void main()
- {
- const char *s = "one two three foo two five two";
- const char *p = "two", *subs = "zu";
- char *d = NULL;
- int d_l = 0;
- d_l = replace(s, d, p, subs);
- d = (char*)malloc(sizeof(char) * d_l + 1);
- replace(s, d, p, subs);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement