modificar el contenido existente del archivo en c

int main()
{
    FILE *ft;
    char ch;
    ft=fopen("abc.txt","r+");
    if(ft==NULL)
    {
        printf("can not open target file\n");
        exit(1);
    }
    while(1)
    {
        ch=fgetc(ft);
        if(ch==EOF)
        {
            printf("done");
            break;
        }
        if(ch=='i')
        {
            fputc('a',ft);
        }
    }
    fclose(ft);
    return 0;
}

Como se puede ver que quiero editarabc.txt de una manera quei es reemplazado pora en eso.
El programa funciona bien pero cuando abroabc.txt externamente, parecía no haber sido editado.
¿Alguna razón posible para eso?

¿Por qué en este caso el personaje despuési no se reemplaza pora, como sugieren las respuestas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta