Siendo pesados ya estas utilizando punteros, ello debido a que el operador "[]" requiere que uno de sus operandos sea
un puntero y el otro un entero.
Supongo lo que deseas es utilizar una variable de tipo "char *" para realizar el proceso. Eso es fácil pero antes hay que indicar dos errores en el programa:
printf ("Introduce una frase: ");
El primero es lógico: al utilizar "%s" la función "scanf" no lee una frase como "anita lava la tina", solo lee una
palabra. El otro es un error en potencia a la misma altura que el uso de "gets": no se limita la lectura de caracteres y ello puede causar una escritura mas allá de la capacidad del array.
Regresando al programa y modificando este para utilizar una variable del tipo mencionado (por supuesto solo es una de varias posibles soluciones):
#include <stdlib.h>
#include <stdio.h>
#define NUM_CHARS 100
int main(void)
{
char frase[NUM_CHARS];
int i;
char *p;
printf("Introduce una frase: "); fgets(frase
, NUM_CHARS
, stdin
);
for (i = 0; frase[i] != '\0'; i++)
;
if (i > 0 && frase[i - 1] == '\n')
frase[--i] = '\0';
p = frase + i;
while (p-- > frase)
return EXIT_SUCCESS;
}
Un saludo