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

Vector dinamico de cadenas de caracteres

Estas en el tema de Vector dinamico de cadenas de caracteres en el foro de C/C++ en Foros del Web. Hola a tod@s Estoy realizando un programa, en el cual debo de utilizar un array de cadenas de caracteres (no se si este termino esta ...
  #1 (permalink)  
Antiguo 04/04/2009, 05:50
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 8 meses
Puntos: 0
Vector dinamico de cadenas de caracteres

Hola a tod@s

Estoy realizando un programa, en el cual debo de utilizar un array de cadenas de caracteres (no se si este termino esta bien utilizado). Me explico mejor mediante un ejemplo:

char cadena [7][15]; // Reservo espacio para 8 palabras de 16 caracteres cada una

El caso es que ahora debo hacer reserva dinamica, es decir, la longitud de cada palabra (los 16 caracteres) los puedo mantener fijos, pero ya no tengo que reservar espacio para 8 palabras, si no que debo obtener el numero de palabras y despues hacer la reserva dinamicamente.

Y la verdad que he intentado varias cosas pero no funciona. Alguien sabría como se puede hacer?

Un saludo!
  #2 (permalink)  
Antiguo 27/05/2009, 08:39
 
Fecha de Ingreso: febrero-2004
Ubicación: Buenos Aires
Mensajes: 60
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Vector dinamico de cadenas de caracteres

Primero un comentario para definir un array de 8x16 tienes que hacer
Código c++:
Ver original
  1. char cadena[8][16];

Y si el segundo indice corresponde a una cadena de caracteres tienes que hacer espacio para el caracter nulo que indica el fin de la cadena. entonces deberia ser

Código c++:
Ver original
  1. char cadena[8][17]

Para hacer reserva dinamica se utilizan los operadores new y delete [];

Primero se declara un puntero a puntero para poder inicializar un array bidimensional.

Código c++:
Ver original
  1. char  **cadena;


si words es el numero de palabras se uza el operador new para crear un array de cadenas de longitud words.

Código c++:
Ver original
  1. cadena=new char *[words];

luego para cada palabra se define una cadena de longitud 16

Código c++:
Ver original
  1. for(int i=0;i<words;i++) cadena[i]=new char[17];

Todo junto seria:

Código c++:
Ver original
  1. char  **cadena;
  2.  
  3. cadena=new char *[words];
  4.  
  5. for(int i=0;i<words;i++) cadena[i]=new char[17];

Y cuando terminas de usar la cadena no tenes que olvidarte de liberar la memoria utilizada.

Código c++:
Ver original
  1. for(int i=0;i<words;i++) delete [] cadena[i];
  2.  
  3. delete [] cadena;

Espero que te sirva
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:41.