si que es cierto que no hay que reservarle memoria obligatoriamente a un puntero, pero si que hay que inicializarlo y decirle que apunte a algun sitio. hay 2 maneras para hacer esto:
1. reservar memoria como en el ejemplo anterior.
2. darle la direccion de alguna variable para que apunte a ella. como esa variable ya habia sido declarada, no tienes que declarar mas memoria. en el caso de strings, el mismo nombre de la cadena ya es un puntero al comienzo de la cadena. el ejemplo de antes hecho de esta manera podria ser asi:
edito: para poner el codigo con colores, selecciona las etiquetas GeSHi cuando escribas el mensaje. en este caso, serian asi [code = c][ / code] (sin ningun espacio en ellas, pero es que sino no aparece).
1. reservar memoria como en el ejemplo anterior.
2. darle la direccion de alguna variable para que apunte a ella. como esa variable ya habia sido declarada, no tienes que declarar mas memoria. en el caso de strings, el mismo nombre de la cadena ya es un puntero al comienzo de la cadena. el ejemplo de antes hecho de esta manera podria ser asi:
Código (c) [Seleccionar]
#include <stdio.h>
#define MAX 20
int main()
{
char *cadena, cadena2[MAX];
cadena=cadena2;
fgets(cadena, MAX-1, stdin);
while(*cadena!='\0') {
putchar(*cadena);
cadena++;
}
return 0;
}
edito: para poner el codigo con colores, selecciona las etiquetas GeSHi cuando escribas el mensaje. en este caso, serian asi [code = c][ / code] (sin ningun espacio en ellas, pero es que sino no aparece).