sólo un pequeño problema, no me permite ingresar más de 2 palabras, es decir, al momento de dejar el espacio para poner la segunda palabra, me marca como si estuviera vacío y me regresa a que ingrese de nuevo el texto.
Si estas aprendiendo C++ lo mejor es seguir el ejemplo de
RyogiShiki ya que al utilizar la biblioteca estándar de C++ te olvidas de ciertos problemas (por ejemplo la longitud de la linea).
El programa que mencionas no acepta lineas con mas de una palabra porque su condición de salida lo prohíbe:
while(strchr(palabra, 32));
La función strchr retorna verdadero (una dirección diferente de NULL) cuando el carácter indicado por el segundo argumento (en este caso 32, mejor indicarlo con ' ') se encuentra en la cadena (primer argumento). Es por eso que el bucle se repetirá mientras la linea contenga un espacio.
En su lugar se debe verificar que la linea contenga al menos un caracter que no sea espacio o tabulador. Para ello se puede utilizar:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char linea[30];
size_t pos;
do {
cout << "Ingresa una cadena: ";
cin.getline(linea, 30);
pos = strspn(linea, " \t");
}while (linea[pos] == '\0');
cout << "Linea: " << linea << endl;
return 0;
}
Pero, de nuevo, mejor enfocate en aprender la biblioteca estándar de C++.
Un saludo