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

Bus error con punteros y estructuras

Estas en el tema de Bus error con punteros y estructuras en el foro de C/C++ en Foros del Web. Buenas tardes, Recurro a vosotros ya como última opción porque no consigo solucionar un "Bus error" que me genera mi código al manejar punteros y ...
  #1 (permalink)  
Antiguo 31/08/2010, 12:47
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 9 meses
Puntos: 0
Bus error con punteros y estructuras

Buenas tardes,
Recurro a vosotros ya como última opción porque no consigo solucionar un "Bus error" que me genera mi código al manejar punteros y que no sé cómo solucionar.

Estoy implementando un compilador con Flex y Yacc y en la parte de Flex incluyo el siguiente código C, que he probado a sacarlo a un fichero .c y me sigue dando el mismo fallo:

Código:
	#include <stdlib.h>
	#include <stdio.h>
	#include <string.h>
	#include "y.tab.h"
	
	typedef struct reserv {/* tipo creado para las palabras reservadas de C */
    	char *palabra;
    	int  token;
	} reservadas;
	
	reservadas reserv[] = {
		{"if", 3},
		{"else", 4},
		{"while", 5},
		{"main", 6},
		{"printf", 7},
		{"include", 8},
		{"return", 9},
		{"nil", 0}
	};
	char *tipos[] = {"int", "void", "nil"}; /* nil añadido para marcar el fin de los tipos */
	
	extern int lineno;
	extern FILE *yyin;
	
	void yyerror(char *);
	int reservada(char *palabra);
	
int reservada(char *palabra) {
	int i = 0;
	int tipo = 1;

	while (strcasecmp(reserv[i].palabra, "nil")) {
    	if (strcasecmp(reserv[i].palabra, palabra) == 0) {
    		tipo = reserv[i].token;
 	 	}
 	 	i++;
    }
    
    while (strcasecmp(tipos[i], "nil")) {
    	if (strcasecmp(tipos[i], palabra) == 0) {
    		tipo = 2;
 	 	}
 	 	i++;
    }
	
	return tipo;
}

int main() {
	int tipo = reservada("while");
	printf("%d", tipo);
	return tipo;
}
Por favor, ¿algún alma caritativa al que le tenga que deber aprobar mi última asignatura de la carrera?

Un saludo, y muchas gracias.

Última edición por Javi_Portillo; 31/08/2010 a las 13:34
  #2 (permalink)  
Antiguo 31/08/2010, 14:45
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Bus error con punteros y estructuras

Hint:
Imprime el valor que tiene la variable i entremedio de los 2 ciclos.
  #3 (permalink)  
Antiguo 31/08/2010, 16:19
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Bus error con punteros y estructuras

Muchas gracias, fue prácticamente postear y darme cuenta del fallo.

Ahora por lo menos sé que el problema es cosa del yytext de Flex que le paso a la función, a ver si consigo solucionarlo...
  #4 (permalink)  
Antiguo 31/08/2010, 16:59
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Bus error con punteros y estructuras

Si crees que el problema estaba en el yytext, te vuelvo a recomendar que imprimas el valor de la variable i entremedio de los 2 ciclos while.
  #5 (permalink)  
Antiguo 01/09/2010, 14:51
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Bus error con punteros y estructuras

Finalmente el problema se debía al tipo de dato que recogía el fichero de yacc, así que nada, solucionado.

Muchas gracias por responder CalgaryCorpus!

Etiquetas: bus, estructuras, punteros
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 16:54.