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

Core Dumped (C)

Estas en el tema de Core Dumped (C) en el foro de C/C++ en Foros del Web. Hola, estoy tratando de crear esta micro aplicaciòn en C para identificar si la cadena ingresada es un comentario, un identificador, o ninguno. Las convenciones ...
  #1 (permalink)  
Antiguo 11/03/2008, 20:17
 
Fecha de Ingreso: octubre-2007
Mensajes: 5
Antigüedad: 16 años, 7 meses
Puntos: 0
Core Dumped (C)

Hola, estoy tratando de crear esta micro aplicaciòn en C para identificar si la cadena ingresada es un comentario, un identificador, o ninguno.

Las convenciones son:

/*(cadena)*/ -> comentario
_(cadena) -> identificador

(cadena) _(cadena) */ -> ninguno de los dos

Cuando ejecuto el programa me tira "Fallo de segmentación (Core Dumped)", según tengo entendido se debe generalmente a un bug en el código; después de estar horas tratando de descubrir qué es no logro entender cuál es la falla.. así que agradecería si pudieran darme una mano.

El código es el siguiente:

Código:
#include <stdio.h>
#include <string.h>

int main()
{
    char cadena[] = "";
    char * cad;
    char * busqueda;
    char * busq;
    long int total_c;
    
    printf( "ingrese una oracion: " );
    scanf( "%s", cadena );

    busqueda = strstr( cadena, "/*" );
    
    if( busqueda != NULL )
    {
        busq = strrchr( cadena, '*' );
        
        total_c = busq - cadena;
        
        cad = &cadena[ total_c ];
        

        if( strcmp( cad, "*/" ) == 0 )
        {
            printf( "La cadena ingresada es un comentario." );
        }
    }
    else
    {
        busqueda = strstr( cadena, "_" );        
        
        if( busqueda != NULL )
        {    
             printf( "La cadena ingresada es un identificador." );
        }
        else
        {
             printf( "La cadena ingresada no es ni un comentario ni un identificador." );
        }
    }
    
    return 0;
}
Si sirve de algo, el sistema operativo que utilizo es Linux.

Desde ya, muchas gracias por su tiempo.
  #2 (permalink)  
Antiguo 13/03/2008, 07:31
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Core Dumped (C)

Depuralo (con gdb por ejemplo).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 13/03/2008, 16:53
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
Re: Core Dumped (C)

Pues de manera personal en lugar de emplear el arreglo char cadena[], utilizaría un apuntador char *cadena
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #4 (permalink)  
Antiguo 14/03/2008, 13:23
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 3 meses
Puntos: 22
Re: Core Dumped (C)

Ojo:
Código:
char cadena[] = "";
El arreglo cadena solo tiene reserva para un elemento, por lo que no es válido que intentes escribir una cadena de longitud mayor a 1.

Un saludo.
  #5 (permalink)  
Antiguo 14/03/2008, 16:45
 
Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: Core Dumped (C)

Intenta especificar un tamaño a la cadena

char cadena[250 + 1] = "";

De esta manera tandras lugar para reservar una cadena con un maximo de 250 caracteres, y uno extra para el caracter nulo.

Última edición por Germancho7186; 14/03/2008 a las 16:50
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 05:12.