Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ingresar cadenas dinamicas

Estas en el tema de Ingresar cadenas dinamicas en el foro de C/C++ en Foros del Web. Hola a todos, una pregunta como puedo realiza una aplicacion en donde el usuario introduzca cadenas de longitud n? Por ejemplo el código : Código: ...
  #1 (permalink)  
Antiguo 06/02/2009, 11:40
 
Fecha de Ingreso: enero-2009
Mensajes: 78
Antigüedad: 15 años, 3 meses
Puntos: 0
Ingresar cadenas dinamicas

Hola a todos, una pregunta como puedo realiza una aplicacion en donde el usuario introduzca cadenas de longitud n?

Por ejemplo el código :

Código:
#include <stdio.h>

int main()
{  
   char *cadena=NULL;
   int i=0;
   printf("Palabra: ");
   scanf("%s",cadena);
   printf("%s",cadena);
   scanf("%i",&i);
}
Me genera error a la hora de introducrile valor a "cadena", hay alguna manera de hacer lo que pretendo?
Gracias XD
  #2 (permalink)  
Antiguo 06/02/2009, 19:12
Avatar de MeduZaPaT  
Fecha de Ingreso: enero-2009
Ubicación: USA
Mensajes: 106
Antigüedad: 15 años, 3 meses
Puntos: 3
Respuesta: Ingresar cadenas dinamicas

por lo que veo eso es C, lo que te queda por hacer es un array de buffer de una longitud grande, y luego de que el usuario ingresa el valor creas un malloc del tamaño de de la cadena.
hay varias maneras, pero si o si tenes que crear una cadena con la longitud suficiente como para avarcar el dato que pueda ingresar el usuario y no te haga un overflow (tenes proteccion contra eso) que te corte el dato, pero no creo que un usuario ingrese mas de 10000 chars ;)

y si usases C++ con string estas echo, todo eso queda en 2 lineas de codigo
string cadena;
cin.getline() << cadena;

Última edición por MeduZaPaT; 06/02/2009 a las 19:24
  #3 (permalink)  
Antiguo 10/02/2009, 23:48
Avatar de cesmichael  
Fecha de Ingreso: julio-2008
Mensajes: 207
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ingresar cadenas dinamicas

creo que a la vez de poner scanf("%s",cadena); pondrías gets(cadena) Creo que no habria probelma la otra forma tambiens eria declrando la variable cadena de tipo string pero ahi ya no seria cadena dinamica
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.