modificar o conteúdo existente do arquivo em 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 pode ver que eu quero editarabc.txt de tal maneira quei é substituído pora iniciar.
O programa funciona bem, mas quando abroabc.txt externamente, parecia não ter sido editado.
Alguma razão possível para isso?

Por que, neste caso, o personagem depoisi não é substituído pora, como as respostas sugerem?

questionAnswers(3)

yourAnswerToTheQuestion