Anche se hai risolto, ti consiglio un approccio più semplice e pulito:
  • scrivi una funzione che riceve due puntatori a char e inverte i caratteri posti tra i due (normalmente si usa un intervallo semiaperto del tipo [begin, end), ovvero il primo puntatore punta al primo carattere da considerare, il secondo ad un carattere dopo l'ultimo);
  • il tuo main a questo punto deve soltanto andare alla ricerca di punti nella stringa, e ogni volta che trova un nuovo punto può richiamare la funzione sul range determinato dal punto precedente e dal punto corrente.

codice:
#include <stdio.h>
#include <string.h>

/* Inverte il testo contenuto nell'intervallo semiaperto [begin, end) */
void reverse(char *begin, char *end)
{
    /* Si sposta sul "vero" ultimo carattere */
    end--;
    /* Ripete e avvicina verso il centro della parola i due puntatori
     * finché non si "toccano" al centro della parola */
    for(;end-begin>=1; begin++, end--)
    {
        /* Scambia i due caratteri */
        char temp=*begin;
        *begin=*end;
        *end=temp;
    }
}

int main()
{
    char buffer[256];
    /* Acquisisce la stringa da tastiera */
    if(fgets(buffer,sizeof(buffer), stdin)==NULL)
        return 1;
    /* Elimina l'eventuale newline finale */
    size_t l=strlen(buffer);
    if(buffer[l-1]=='\n')
        buffer[l-1]=0;
    /* Inizio della parola corrente */
    char *wordStart=buffer;
    /* Puntatore di lettura */
    char *readPtr=buffer;
    do
    {
        /* Se abbiamo trovato un nuovo punto o siamo alla fine della parola */
        if(*readPtr=='.' || *readPtr==0)
        {
            /* Inverti la parola */
            reverse(wordStart, readPtr);
            /* La prossima parola inizia al carattere successivo */
            wordStart=readPtr+1;
        }
        /* Continua a ciclare finché non è finita la parola */
    } while(*readPtr++);
    /* Scrive l'output */
    puts(buffer);
    return 0;
}