Voy a suponer que el array donde esta el string es "buffer"
Todo lo necesario para leerlo y contar eso deberia ser esto:
// Creo un puntero
char *ptr = buffer;
while(ptr)
{
if(*ptr=='"') contador++;
}
Claramente en el codigo espero que realmente sea una string, es decir tenga SI o SI un caracter nulo 0x00 al final.
¿ Y de esa forma el puntero se incrementa automáticamente para barrer el array ?.
Por otra parte, no creo que sea ese el problema, acceder a un array usando un puntero o en la forma buffer1[indice] debería de ser lo mismo, tu forma queda más limpia y aseada, pero el resultado debería de ser el mismo.
Más parece un problema de la forma de definir las comillas, yo le haría un debug y saldrías de dudas de inmediato, para ver el contenido inicial del array y como resoponde ese IF a la comparativa. La mayoría de dudas que se plantean sobre programas que no hacen lo que queremos se resuelve de inmediato con un Degug, no se porque la gente es tan poco dada a usarlo, a mi me resuelve el 99% de los problemas en un momento, otra cosa es no saber como hacer las cosas o errores de compilación.