Hola:
El programa tiene algunos errores "generales".
Por ejemplo, si estás en C++ deberás usar
cstring y no
string.h
Además,
cout pertenece a la librería
iostream, así que lo que tienes no te puede compilar. Y también faltaría añadir el namespace std o anteponer el ámbito std antes de cout
std::cout
Por último, en C++ el programa principal es una función de tipo
int, no void, y ha de retornar 0.
Bueno, y sobre la duda en cuestión, lo que pones parece demasiado complicado.
Yo lo resolvería así:
Usa 3 contadores, uno para recorrer la frase orígen hasta el final, otro para incrementar el array que guarda cada palabra por separado, y un último para poder asociar cada caracter a copiar dentro del primer array con el segundo.
Y aunque no es lo correcto, te pongo el código explicado:
Código C++:
Ver original#include <cstring>
#include <iostream>
int main()
{
char cad[80]="esto es un mensaje", copia[80][20];
int num_palabras=0;
int pos=0;
for (int i
= 0; i
< strlen(cad
); i
++) {
if (cad[i] == ' ') //si me encuentro un espacio
{
copia[num_palabras][pos]='\0'; //Poner un caracter '\0' al final del array que contiene la palabra separada,
//para que la cadena quede bien terminada.
num_palabras++; //Pasaré al siguiente índice del array que contiene las palabras separadas
pos=0; //y al primer indice de éste:
i++; //me salto ese espacio
}
copia[num_palabras][pos]=cad[i];
pos++;
}
copia[num_palabras][pos]='\0'; //añado un '\0' a la última palabra
//mostrar el resultado
for (int i=0;i<=num_palabras;i++)
{
std::cout<<copia[i]<<std::endl;
}
return 0;
}