Foros del Web » Programación para mayores de 30 ;) » Programación General »

Tabla de datos con C

Estas en el tema de Tabla de datos con C en el foro de Programación General en Foros del Web. Hola. estoy haciendo un proyecto en C utilizando el Visual Studio 2005 y pues necesito crear un tabla de la siguiente manera: char tabla[][]={ {"xxx", ...
  #1 (permalink)  
Antiguo 04/06/2005, 12:22
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Tabla de datos con C

Hola. estoy haciendo un proyecto en C utilizando el Visual Studio 2005 y pues necesito crear un tabla de la siguiente manera:

char tabla[][]={
{"xxx", "xxxx", 0xFF},
{........................},
.
.
.
}
El problema es que el vsual studio mepide el numero de subindice en el arreglo cosa que no se, ya que la tabla aun no esta terminada y aparte es muy muy grande. Podria usar numero grandes pero el chiste es que use lo justo de memoria.

Ahora, tambien me marcan errores como:

error C2078: too many initializers

error C2117: 'opcode_table' : array bounds overflow
c:\Dospro\Proyectos\gb_asm_2\opcodes.h(10) : see declaration of 'table'

Soy malo para este tipo de cosas con cadenas y tablas, por eso pido ayuda.
De que manera debo de declarar la variable para que la tabla pueda ser bien contenida sin desperdiciar memoria?

Saludos
  #2 (permalink)  
Antiguo 04/06/2005, 20:50
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Bueno, ya resolvi el problema.

Tuve que poner tamaños extragrandes a los subindices(por ahora)
y pues los errores esa por que necesitaba usar unsigned char en vez de char por los 0x80+.

Saludos
  #3 (permalink)  
Antiguo 05/06/2005, 03:57
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Vamos a ver, no puedes hacer:

char tabla[][]=
{
{"xxx", "xxxx", 0xFF},

has definido tabla como un array de arrays de chars, por lo tanto si el último índice le usas para cadenas, quiere decir que tienes un array de cadenas, por lo que lo expresas así:

char * tabla[]={"holaaa","adios","tal"};

Pero nada de hacer múltiples {} (eso sería si quisieses definir cada cadena con su correspondientes letras una a una). Y sobre los arrays multidimensionales, no se pueden definir sin el índice. En realidad [][] significa * [], o sea array de punteros.

Sobre el uso de [], es simplemente para declarar arrays que no se sabe que tamaño tienen y lo calcula el propio compilador, pero sólo si es de 1 nivel... Se supone que sabrás el máximo de las variables, lo que puede variar es el número de ellas. Ejemplo:

Código:
char tabla[][50]=
	{
		"holaaa",
		"adios",
		"tal",
		{'o', 't', 'r', 'a'}
	};

Última edición por MaxExtreme; 05/06/2005 a las 04:03
  #4 (permalink)  
Antiguo 05/06/2005, 08:22
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Ok, gracias por tu respuesta, pero necesito parias de esos parentesis. La tabla es enorme. Te voy a poner un ejemplo de como me funciono.

Código:
unsigned char opcode_table[1024][4][16]={

	{"adc", "a,a", 0x8F},/*Add with carry*/
	{"adc", "a,b", 0x88},
	{"adc", "a,c", 0x89},
	{"adc", "a,d", 0x8a},
	{"adc", "a,e", 0x8b},
	{"adc", "a,h", 0x8c},
	{"adc", "a,l", 0x8d},
	{"adc", "a,(hl)", 0x8e},
	{"adc", "a,*", 0xce},
Este codigo me estado fucionando bien.
El problema que voy a enfrentar mas tarde va a ser una comparacion de los datos de la tabla para poder sacar el ultimo elemento, pero de eso ya tengo una idea ganaral de hacerlo.

Gracias y Saludos
  #5 (permalink)  
Antiguo 05/06/2005, 08:26
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Instru
Ok, gracias por tu respuesta, pero necesito parias de esos parentesis. La tabla es enorme. Te voy a poner un ejemplo de como me funciono.

Código:
unsigned char opcode_table[1024][4][16]={

	{"adc", "a,a", 0x8F},/*Add with carry*/
	{"adc", "a,b", 0x88},
	{"adc", "a,c", 0x89},
	{"adc", "a,d", 0x8a},
	{"adc", "a,e", 0x8b},
	{"adc", "a,h", 0x8c},
	{"adc", "a,l", 0x8d},
	{"adc", "a,(hl)", 0x8e},
	{"adc", "a,*", 0xce},
Este codigo me estado fucionando bien.
El problema que voy a enfrentar mas tarde va a ser una comparacion de los datos de la tabla para poder sacar el ultimo elemento, pero de eso ya tengo una idea ganaral de hacerlo.

Gracias y Saludos
Je, ¿haciendo un desemsamblador?

No, eso es una chapuza ;)

debes hacerlo así:

Código:
struct opcode
{
	char name[6];
	char par[6];
	unsigned char op;
}

struct opcode tabla[]=
{
	{"adc", "a,a", 0x8F},
	...
}
  #6 (permalink)  
Antiguo 05/06/2005, 08:46
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
No, no es un desensamlbador, es un ensamblador jejejeje, el desensamblador ya lo hice dentro del emulador....

Jajajaja, que loco no se como no se me ocurrio lo de la estructura. Y segun yo muy buenazo para esto y mira con cosas salgo. Bueno, gracias por tu ayuda.
Saludos
  #7 (permalink)  
Antiguo 05/06/2005, 08:50
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por Instru
No, no es un desensamlbador, es un ensamblador jejejeje, el desensamblador ya lo hice dentro del emulador....

Jajajaja, que loco no se como no se me ocurrio lo de la estructura. Y segun yo muy buenazo para esto y mira con cosas salgo. Bueno, gracias por tu ayuda.
Saludos
De nada ;)
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 02:46.