elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  martiz de char doble puntero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: martiz de char doble puntero  (Leído 6,595 veces)
neo_from_cs_matrix

Desconectado Desconectado

Mensajes: 35


Ver Perfil
martiz de char doble puntero
« en: 14 Julio 2011, 21:19 pm »


estatica
Código:
int main()
{
      char mchar[5][30];

      return 0;
}


dinamica
Código:
int main()
{
     int filas = 5;
     int columnas = 30;

     char **mchar = (char**)malloc(sizeof(char)*(filas*columnas));

     free(mchar);

      return 0;
}

la matriz de char creada de la s dos formas, pero me dijeron que esta mal la forma dinamica no se hace asi como esta escrito. se hace con malloc pero no asi coom lo expuce. la intension es declarar una mtriz de char pero no sabiendo sus dimensiones, y usando doble puntero y malloc. agredezco la colaboracion





En línea

Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: martiz de char doble puntero
« Respuesta #1 en: 14 Julio 2011, 21:49 pm »

A mi me funciona así ..

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.     int filas = 5;
  8.     int columnas = 30;
  9.     int i = 0;
  10.     char **listaPalabras = NULL;
  11.  
  12.     listaPalabras  = (char**) malloc(sizeof(char*) * filas * columnas);
  13.  
  14.  
  15.     for (; i < filas ; i++){
  16. listaPalabras[i] = (char*)malloc(sizeof(char) * columnas);
  17. strcpy (listaPalabras[i] , "TEXTO PRUEBA\n");
  18.     }
  19.  
  20.     for (i = 0; i < filas ; i++){
  21. printf("%s ", listaPalabras[i]);
  22.     }
  23.  
  24.     free(listaPalabras);
  25.  
  26.      return 0;
  27. }
  28.  


En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: martiz de char doble puntero
« Respuesta #2 en: 15 Julio 2011, 00:05 am »

la matriz de char creada de la s dos formas, pero me dijeron que esta mal la forma dinamica no se hace asi como esta escrito. se hace con malloc pero no asi coom lo expuce.
Lo primero: en C puedes almacenar el valor de retorno de malloc y para el caso cualquier función que retorne un "void *" en cualquier variable de tipo "puntero a objeto".

Primero debes reservar memoria para el bloque principal que almacenara las direcciones de cada fila. A continuación debes reservar el bloque para cada una de las filas y cuyo tamaño es igual al numero de columnas por el tamaño del objeto almacenado.

Siguiendo el ejemplo que publicas la versión correcta es:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int **mat;
  7.   int filas = 5;
  8.   int columnas = 30;
  9.   int i;
  10.  
  11.   /* Reserva del bloque principal */
  12.   mat = malloc(filas * sizeof *mat);
  13.  
  14.   /* Reserva de la memoria para cada fila */
  15.   for (i = 0; i < filas; i++)
  16.      mat[i] = malloc(columnas * sizeof *mat[i]);
  17.  
  18.   /* ... Algun proceso ... */
  19.  
  20.   /* Liberamos la memoria de cada fila */
  21.   for (i = 0; i < filas; i++)
  22.      free(mat[i]);
  23.   /* Liberamos el bloque principal */
  24.   free(mat);
  25.  
  26.   return EXIT_SUCCESS;
  27. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
operador new para doble char
Programación C/C++
neo_from_cs_matrix 7 3,841 Último mensaje 9 Agosto 2011, 01:16 am
por escabe
Problema: Tamaño de Puntero char
Programación C/C++
yovaninu 8 6,565 Último mensaje 16 Agosto 2011, 14:56 pm
por Gallu
duda doble puntero char a matriz de char
Programación C/C++
neo_from_cs_matrix 3 6,251 Último mensaje 5 Septiembre 2011, 03:53 am
por rir3760
[AYUDA] Cómo puedo concatenar un char a un puntero de chars?
Programación C/C++
papita5 8 6,717 Último mensaje 19 Octubre 2011, 20:39 pm
por papita5
¿Pregunta puntero a char en c++? « 1 2 »
Programación C/C++
Zodiak98 11 6,584 Último mensaje 23 Abril 2013, 17:01 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines