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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Lectura de matríz de char como char** o DWORD*
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Lectura de matríz de char como char** o DWORD*  (Leído 3,244 veces)
david_BS

Desconectado Desconectado

Mensajes: 99



Ver Perfil WWW
Lectura de matríz de char como char** o DWORD*
« en: 20 Febrero 2012, 19:07 pm »

En este código muestro como leer una matríz global de tipo char por medio de una función de tipo char**. una matriz y un array de cadenas son cosas diferentes pero pueden arreglarse para usarse como si fueran lo mismo.

El código básicamente trae dos formas de hacer esto, en la primera hay dos funciones, una que carga elementos en la matríz y la otra hace un arreglo para poder leerla luego en el 'main'

No tiene mucho sentido usar una matríz global pero para hacer una demostración sirve. yo estaba tratando de usar algo como esto para una matríz de char que es miembro de una clase...

En el main así como está puede leerse sólo el primer elemento, se puede modificar para leer todos automáticamente, pero eso no es parte del tema

El título tampoco parece ser la mejor explicación de esto igualmente..

Código:
//---------------------------------------------

char MATRIX[6][6];//global

//---------------------------------------------------

char** CargarItems1(){

for(int i=0; i<6;i++){

strcpy(MATRIX[i], "12345");
}

return (char**)&MATRIX[0][0];
}

char* LeerItems1(int pos_vec){

DWORD* vecofvectors = (DWORD*)CargarItems1();
return *(char**)vecofvectors+(pos_vec*6);
}

//-----------------------------------

DWORD* CargarItems2(){

for(int i=0; i<6;i++){

strcpy(MATRIX[i], "12345");
}
return (DWORD*)&MATRIX[0][0];
}

char* LeerItems2(int pos_vec){

DWORD* vecofvectors = CargarItems2();
        return (char*)vecofvectors+(pos_vec*6);
}

//---------------------------------------------------------

int main()
{
         int pos=0; // de 0 a 5
         char* vec_de_matrix = LeerItems(pos);
         //char* vec_de_matrix = LeerItems2(pos);

         MessageBox(0,vec_de_matrix,"ASD",0);

system("pause");
return 0;
}

Saludos


« Última modificación: 20 Febrero 2012, 19:10 pm por david_BS » En línea

armizh

Desconectado Desconectado

Mensajes: 187

His brain caught in a hole...


Ver Perfil WWW
Re: Lectura de matríz de char como char** o DWORD*
« Respuesta #1 en: 20 Febrero 2012, 19:36 pm »

Voy a aportar en este post con mis funciones para trabajar con char** en C, las hice hace un bueno tiempo pero funcionan perfectamente. Se pueden adaptar para funcionar en cualquier situacion. No las he probado extensamente, cualquier duda o correccion me avisan xd
Código
  1. unsigned char dato[256][256];
  2.  
  3. void make_data(unsigned char **dest, unsigned char *src, int position)
  4. {
  5. int p;
  6. for(p=0;src[p]!='\0';p++)
  7. dest[position][p]=src[p];
  8.        dest[position][p++]='\0';
  9. }
  10.  
  11. void datcpy(unsigned char dest[256][256], unsigned char src[256][256])
  12. {
  13. int ix, iy;
  14. for(ix=0;src[ix]!='\0';ix++) {
  15. for(iy=0;src[ix][iy]!='\0';iy++)
  16. dest[ix][iy]=src[ix][iy];
  17. }
  18.        dest[ix][iy]='\0';
  19. }
  20.  
  21. int datlen(unsigned char src[256][256])
  22. {
  23. int ix, iy, size;
  24. for(ix=0;src[ix]!='\0';ix++) {
  25. for(iy=0;src[ix][iy]!='\0';iy++)
  26. size++;
  27. }
  28. return size;
  29. }
  30.  
  31. void get_data(unsigned char *dest, unsigned char **src, int position)
  32. {
  33. int p;
  34. for(p=0;src[position][p]!='\0';p++)
  35. dest[p]=src[position][p];
  36.        dest[p++]='\0';
  37. }

Saludos!


En línea

Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código
  1. git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
  1. git clone https://github.com/armizh/Hamster
david_BS

Desconectado Desconectado

Mensajes: 99



Ver Perfil WWW
Re: Lectura de matríz de char como char** o DWORD*
« Respuesta #2 en: 20 Febrero 2012, 20:05 pm »

Voy a aportar en este post con mis funciones para trabajar con char** en C, las hice hace un bueno tiempo pero funcionan perfectamente. Se pueden adaptar para funcionar en cualquier situacion. No las he probado extensamente, cualquier duda o correccion me avisan xd
..................

generalmente tratan de resolver este problema usando memoria dinámica, osea malloc y free, pero yo también quería resolverlo sin tener que usarla

en este post muestran como resolverlo mediante memoria dinámica

http://www.rohitab.com/discuss/topic/38806-char-double-pointer-with-matrix/

En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Lectura de matríz de char como char** o DWORD*
« Respuesta #3 en: 20 Febrero 2012, 20:49 pm »

En esa pagina ya te lo resolvieron por lo visto ...
« Última modificación: 20 Febrero 2012, 21:08 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda doble puntero char a matriz de char
Programación C/C++
neo_from_cs_matrix 3 6,024 Último mensaje 5 Septiembre 2011, 03:53 am
por rir3760
Problema De Lectura Y Paso A Matriz « 1 2 »
Programación C/C++
ZedGe 14 6,777 Último mensaje 25 Junio 2012, 07:05 am
por Maik33
Como llenar un char desde el teclado
Programación C/C++
Dacan 8 4,339 Último mensaje 23 Marzo 2013, 05:24 am
por rir3760
Pasar matriz char a una función como referencia
Programación C/C++
KISKE 2 7,279 Último mensaje 18 Junio 2013, 13:07 pm
por KISKE
Ayuda para guardar como char o como int
Programación C/C++
ciquee 5 2,779 Último mensaje 11 Marzo 2019, 18:24 pm
por ciquee
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines