por msamsoniuk » 31 Jan 2009 14:02
ah, mas quando vc declara p[] sem tamanho eh praticamente o mesmo que declarar *p e atribuir, ou seja, o que o compilador vai fazer eh criar um ponteiro para uma area constante, possivelmente na flash, e strcpy() sabe disso jah em tempo de compilacao, motivo pelo qual ele alerta vc.
entao vc tem que declarar explicitamente p[tamanho], assim eh efetivamente criado um array com o tamanho desejado. e vc nao precisa iniciar esse array inteiro, basta usar a notacao de string normal:
char p[32] = "";
vai reservar 32 bytes e iniciar com uma string vazia. desta forma strcpy() detecta que o destino eh em area de memoria ram e passa a funcionar corretamente.