'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 "," */
}
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___________ |
