Bueno logre que al menos cumpla su cometido.
#include <stdio.h>
#include <string.h>
int main( int argc, char* args[] )
{
FILE *ptr;
fpos_t pos;
char palabra_usuario[50] = {};
char palabra_a_buscar[50] = {};
char archivo_restante[256] = {}; // Almacena la cadena de caracteres restante en caso haya encontrado la palabra deseada
char ch;
int n;
bool encontrado = false;
ptr = fopen("prueba.txt", "r+");
if( ptr )
{
printf("Escriba lo que desea modificar: ");
fgets(palabra_usuario, 50, stdin);
while( !feof(ptr) && !encontrado )
{
n = 0;
fgetpos( ptr, &pos );
do
{
ch = fgetc(ptr);
palabra_a_buscar[n++] = ch;
} while( ch != '\n' && ch != EOF );
if( palabra_a_buscar[n-1] == EOF )
palabra_a_buscar[n-1] = '\n';
if( strcmp(palabra_usuario, palabra_a_buscar) == 0 )
{
n = 0;
do
{
ch = fgetc(ptr);
archivo_restante[n++] = ch;
} while( !feof(ptr) && ch != EOF );
archivo_restante[n-1] = '\0';
printf("Su palabra: %s \nPalabra encontrada: %s\n\n", palabra_usuario, palabra_a_buscar);
printf("Escriba por lo que lo quiera cambiar: ");
fgets(palabra_usuario, 50, stdin);
fsetpos(ptr,&pos);
fprintf(ptr, "%s%s", palabra_usuario, archivo_restante);
encontrado = true;
}
memset(palabra_a_buscar, '\0', 50);
}
if( !encontrado )
printf("No se encontro esa palabra");
}
fclose(ptr);
return 0;
}
Quizas exista una manera mas eficiente, pero al menos pude hacer que funcionara