Malditos punteros (ayuda con programa)

novatillo
26 de Diciembre del 2005
Hola a todos, vereis, acabo de empezar con el tema de los punteros y estoy un poco perdido.

Estoy haciendo un programilla que tiene que dividir una cadena de caracteres en sus palabras.
El programa tiene que hacer:

1-Pedir al usuario una frase, se guardara en una cadena de caracteres.
2-Utilizando un puntero se recorrera la cadena y cuando se encuentre un espacio en blanco lo sustituira por un caracter nulo.
3-El puntero se posicionara al inicio de la palabra y la sacara por pantalla.
4-El puntero se posicionara en la siguiente palabra y repetira los pasos 2 y 3.

Pues bien, de momento llevo hecho lo siguiente:

#include <iostream.h>
#include <string.h>
void main (void)
{
char frase[100];
char *punt=NULL;
int longitud,i=0;

cout<<"Escriba una frase:" <<endl;
cin.getline(frase,100);

longitud=strlen(frase);
punt=frase;

for (i;i<longitud;i++)
{
if (punt[i]==32)
{
punt=frase;
punt[i]=0;
i=0;
}
}
cout<<punt<<endl;
}


pero la verdad es que no me hace mucho caso.
Por ejemplo;
si le meto como frase "Hola que tal", al separar la cadena de caracteres me saca por pantalla solo " Hola".
:S:S

Aver si me podeis echar una manita... GRACIAS

azeballes
26 de Diciembre del 2005
No entiendo bien que es lo que tiene que hacer el código. Pero lo que te muestra es correcto ya que las cadenas en C terminan con el caracter nulo. Es por eso que donde encuentra el nulo te corta la cadena.

Espero que te sirva.
Saludos.