How to replace substring in C

2 Answers

0 votes
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *substring_replace(char *s, size_t size, char *substring, char *replace) {
    char *substring_start = strstr(s, substring);

    if (substring_start == NULL) {
        return NULL;
    }
    
    if (size < strlen(s) + (strlen(replace) - strlen(substring))) {
        printf("String size exceeded\n");
        return NULL;
    }
    
    memmove(substring_start + strlen(replace),
            substring_start + strlen(substring),
            strlen(substring_start) - strlen(substring) + 1
    );
    
    memcpy(substring_start, replace, strlen(replace));
    
    return substring_start + strlen(replace);
}

int main() {
    char s[50] = "c c++ c# java python go java";
    
    while(substring_replace(s, 50, "java", "php"));
    
    puts(s);
    
    return 0;
}



/*
run:

c c++ c# php python go php

*/

 



answered Jan 5, 2021 by avibootz
0 votes
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *substring_replace(char *s, size_t size, char *substring, char *replace) {
    char *substring_start = strstr(s, substring);
    
    if (substring_start == NULL) {
        return NULL;
    }
    
    if (size < strlen(s) + (strlen(replace) - strlen(substring))) {
        printf("String size exceeded\n");
        return NULL;
    }
    
    strcpy(strcpy(s + (substring_start - s), replace) + strlen(replace), substring_start + strlen(substring));

    return s;
}

int main() {
    char s[50] = "c c++ c# java python go java";
    
    while(substring_replace(s, 50, "java", "php"));
    
    puts(s);
    
    return 0;
}



/*
run:

c c++ c# php python go php

*/

 



answered Jan 5, 2021 by avibootz

Related questions

...