El Guru Programador
Usuario DESCONOCIDO | Registrate Gratis | Usuarios Registrados
Foro de C++/C#
Foros del Guru > C++/C#
Usuario leer cadena de caracteres
Desconocido
Enviado - 16/12/2004
?
Estoy haciendo ejercicios en los que tratamos cadenas, para ello definimos el texto desde el propio programa, y luego usamos funciones.

char *p="Hola mundo";

mi duda es, como puedo pedir el texto al usuario, y guardarlo como un array de char.

creia que era con la funcion:
cin.getline(char donde lo dejo,caracter limitador);

Tambien he probado con la funcion gets, y me he percatado que asi:

char p[100]
cout<<"teclea frase: "<<;
gets(p)

si que funciona, pero cuando lo quiero utilizar asi

char *p
cout<<"teclea frase: "<<;
gets(*p)

No funciona.

Echarme una mano con este lio por favor.

SALUDOS Y GRACIAS
?
helldaga
9 Mensaje(s)
Enviado - 19/12/2004
?
Primero que todo en c++, es mejor utilizar cin.getline(cadena,tama?o); para leer una sarta (cadena de caracteres), ya que controla la cantidad de caracteres que entran en la cadena cuidando que no se pase del tama?o asignado a la misma, lo que no sucede con gets.
En cuanto a porque no le funciona gets(*p), es debido a que lo que ested tiene ahi es tan solo un apuntador a una direcci?n de memoria al cual no se le puede asignar contenido a menos que se reserve de forma din?mica, ejemplo:

#include
#include

void main()
{
char *vec;

vec = new char[10]; /*Reservo memoria para una sarta de m?ximo 9 caracteres ya que el 10 es el caracter nulo*/

cout<<"Digite la cadena: \n";
cin.getline(vec,10); //Leo la cadena
cout<<"La sarta digitada fue:\n"< getch();
}

SUERTE.
?
Desconocido
Enviado - 22/12/2004
?
pero a priori, no se cuanto espacio reservar, ya que no se el tama?o que me va a teclear el usuario.

Es obligatorio crear el array de un tama?o lo sufucientemente grande PARA QUE A TU ENTENDER, nunca sea sobrepasado, o hay alguna forma de dinamicamente segun teclea crear el array con el tama?o justo?

Me explico

char nombre [100]
cout<<"Introduce nombre: ";
cin.getline(nombre,100);
/*si el nombre ocupa 16+1, los restantes hasta 100 se desaprovechan? o quedan libres?*/

SALUDOS y MUCHISIMAS GRACIAS
?
avalanch
2 Mensaje(s)
Enviado - 28/12/2004
?
Prueba hacerlo asi
string nombre;
cout<<"Digame nombre"< getline(cin,nombre);
?
?

?

Contactos myStudio Network
?