#include <string.h>
#include <stdio.h>

void replace(const char* str, char* result, const char* sep,
             const char* replace_what, const char* replace_with)
{
    result[0] = '\0';
    while(*str != '\0') {
        size_t len = strspn(str, sep);
        strncat(result, str, len);
        str += len;

        len = strcspn(str, sep);
        if(strncmp(str, replace_what, len) == 0)
            strcat(result, replace_with);
        else
            strncat(result, str, len);
        str += len;
    }
}

int main()
{
    char origin[] = "a1aaa1a";
    char result[100];
    char replace_what[] = "a";
    char replace_with[] = "b";
    char tok[] = "123";
    replace(origin, result, tok, replace_what, replace_with);
    printf("%s", result);
    return 0;
}