Escribir en un archivo usando fputs en C

¿Alguien podría decirme por qué el archivo no cambia? Funciona cuando usorewind ofseek pero no de otra manera

¿Cuál es la forma estándar de usarfputs despuésfgets. El indicador de archivo está en la posición 9, entoncesfputs debe escribir después de eso, pero no hace nada.

En archivo:

abcd efgh ijkl mnor

En código fuente:

char c;
char str[15];

FILE *fp = fopen("d:\\data.txt","r+");

fgets(str, 10, fp);

// fseek(fp, 9, SEEK_SET);
// rewind(fp);

printf("%d\n", ftell(fp));
// ftel shows that it's in "9".

printf("%s", str);

fputs(str, fp);
// why its not working

fclose(fp);

Respuestas a la pregunta(2)

Su respuesta a la pregunta