'Replace a character in file using c

I am trying to replace the character/string in a file with a character/string Request to provide solution/guidance

code snipet is below,

char stringtofind[4] = "]}";

fgets(get_line, sizeof(get_line), fileptr);
if (strstr(get_line,stringtofind) != NULL)
{
/* Help Required to replace the string "]}" with "," */
}
c


Solution 1:[1]

char *dupstringreplace(const char *haystack, const char *needle, const char *replace)
{
    char *newhaystack = NULL;
    const char *wrk = haystack;
    char *newwrk;
    ssize_t occurences = 0;
    size_t needleLen = strlen(needle);
    size_t replaceLen = strlen(replace);

    while((wrk = strstr(wrk, needle)))
    {
        occurences++;
        wrk += needleLen;
    }
    newhaystack = malloc(strlen(haystack) + occurences * ((ssize_t)replaceLen - (ssize_t)needleLen) + 1);
    wrk = haystack;
    newwrk = newhaystack;
    while((wrk = strstr(wrk, needle)))
    {
        memcpy(newwrk, haystack, wrk - haystack);
        newwrk += wrk - haystack;
        memcpy(newwrk, replace, replaceLen);
        newwrk += replaceLen;
        wrk += needleLen;
        haystack = wrk;
    }
    strcpy(newwrk, haystack);
    return newhaystack;
}


int main(void)
{
    FILE *fi = fopen("a.txt", "r+");
    long size;
    char *content, *replaced;

    fseek(fi, 0, SEEK_END);
    size = ftell(fi); 
    fseek(fi, 0, SEEK_SET);


    content = malloc(size);
    if(content)
    {
        fread(content, 1, size, fi);
        replaced = dupstringreplace(content, "{[", ",");
        if(replaced)
        {
            fseek(fi, 0, SEEK_SET);
            fwrite(replaced, 1, size, fi);
        }
    }
    if(fi) fclose(fi);
    free(replaced);
    free(content);
}

Add some file error checks

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 0___________