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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Segmentation fault en programa con cola enl lenguaje C.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Segmentation fault en programa con cola enl lenguaje C.  (Leído 1,864 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Segmentation fault en programa con cola enl lenguaje C.
« en: 6 Agosto 2016, 22:06 pm »

Hola, que tengan muy buen día. -
Repase el video de donde saque el Ej. una decena de veces y no logro hacer que el programa no me de el error  Segmentation fault, busque también en internet el error del compilador y nada.
Nota: Alberto, mil disculpas por no copiarlo de tu video que por cierto lo vi un par de veces pero este me pareció más acorde a mis conocimientos (así me fue). -
Si además de decirme como solucionarlo (cosa que descarto) si me pondrían poner un poco de teoría del porqué me seria de mucha utilidad para no repetir. -

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct ElementoLista{
  6. char *dato;
  7. struct ElementoLista *siguiente;
  8. }Elemento;
  9.  
  10. typedef struct ListaUbicacion{
  11. Elemento *inicio;
  12. Elemento *fin;
  13. int tamanio;
  14. }Cola;
  15.  
  16. void inicializacion_cola( Cola *serie);
  17. int insertar_cola( Cola *serie, Elemento *actual, char *dato );
  18. int quitar_cola( Cola *serie );
  19. void imprimir_cola( Cola *serie );
  20.  
  21. int main( void ){
  22. Cola *serie;
  23. inicializacion_cola( serie );
  24.  
  25. insertar_cola( serie, serie->fin, "1" );
  26. insertar_cola( serie, serie->fin, "2" );
  27. insertar_cola( serie, serie->fin, "3" );
  28. insertar_cola( serie, serie->fin, "4" );
  29. insertar_cola( serie, serie->fin, "5" );
  30. insertar_cola( serie, serie->fin, "6" );
  31. insertar_cola( serie, serie->fin, "7" );
  32. insertar_cola( serie, serie->fin, "8" );
  33. insertar_cola( serie, serie->fin, "9" );
  34.  
  35. imprimir_cola( serie );
  36.  
  37. printf( "\n" );
  38.  
  39. quitar_cola( serie );
  40. quitar_cola( serie );
  41. quitar_cola( serie );
  42. quitar_cola( serie );
  43.  
  44. imprimir_cola( serie );
  45.  
  46. return 0;
  47. }
  48.  
  49. void inicializacion_cola( Cola *serie){
  50. serie->inicio = NULL;
  51. serie->fin = NULL;
  52. serie->tamanio = 0;
  53. }
  54.  
  55. int insertar_cola( Cola *serie, Elemento *actual, char *dato ){
  56. Elemento *nuevo_elemento;
  57.  
  58. if( ( nuevo_elemento = (Elemento *)malloc( sizeof( Elemento ))) == NULL )
  59. return -1;
  60. if( (nuevo_elemento->dato = ( char * )malloc(50 * sizeof (char))) == NULL)
  61. return -1;
  62.  
  63. strcpy( nuevo_elemento->dato , dato );
  64.  
  65. if( actual == NULL ){
  66. if( serie->tamanio == 0 ){
  67. serie->fin = nuevo_elemento;
  68. }
  69. nuevo_elemento->siguiente = serie->inicio;
  70. serie->inicio = nuevo_elemento;
  71. }else if( actual->siguiente == NULL ){
  72. serie->fin = nuevo_elemento;
  73.  
  74. nuevo_elemento->siguiente = actual->siguiente;
  75. actual->siguiente = nuevo_elemento;
  76. }
  77. serie->tamanio++;
  78.  
  79. return 0;
  80. }
  81.  
  82. int quitar_cola( Cola *serie ){
  83. Elemento *sup_elemento;
  84.  
  85. if( serie->tamanio == 0 ){
  86. return -1;
  87. }
  88. sup_elemento = serie->inicio;
  89. serie->inicio = serie->inicio->siguiente;
  90.  
  91. free( sup_elemento->dato );
  92. free( sup_elemento );
  93.  
  94. serie->tamanio--;
  95. return 0;
  96. }
  97.  
  98. void imprimir_cola( Cola *serie ){
  99. Elemento *actual;
  100. int i;
  101. actual = serie->inicio;
  102.  
  103. for( i=0; i<serie->tamanio; i++ ){
  104. printf( "\n %p - %s", actual, actual->dato );
  105. actual = actual->siguiente;
  106. }
  107. }
  108.  

Citar
Program received signal SIGSEGV, Segmentation fault.
0x00000000004007d2 in inicializacion_cola (serie=0x0) at Cola.c:50
50      serie->inicio = NULL;   
Saludos.   


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Segmentation fault en programa con cola enl lenguaje C.
« Respuesta #1 en: 6 Agosto 2016, 23:01 pm »

Código
  1. int main( void ){
  2. Cola *serie = (Cola *)malloc( sizeof( Cola ));
  3. inicializacion_cola( serie );

Ya encontré el error. -
Saludos


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Segmentation fault en programa con cola enl lenguaje C.
« Respuesta #2 en: 12 Agosto 2016, 17:08 pm »

No te preocupes, siempre que logres aprender mas del lenguaje no importa que código uses o estudies, el punto es que aprendas.

Si ese error yo lo trato de evitar inicializando el la Cola en la misma funciona donde agrego valores, se inicializa en caso de que no este inicializada y por eso yo hago algo como:

Código
  1. Cola *serie = NULL;
  2. serie = insertar_cola( serie, "1" );
  3.  

Y en mi caso siempre los agrego al final.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con segmentation fault
Programación C/C++
puppetz 7 3,123 Último mensaje 26 Junio 2014, 23:58 pm
por Eternal Idol
segmentation fault en mi programa
Programación C/C++
:Luigi 3 4,714 Último mensaje 30 Noviembre 2014, 23:37 pm
por :Luigi
Segmentation Fault C++
Programación C/C++
marlboreano 6 3,586 Último mensaje 15 Enero 2015, 18:15 pm
por _Enko
segmentation fault al mostrar lista simplemente ligada en lenguaje C.
Programación C/C++
NOB2014 2 1,877 Último mensaje 20 Julio 2016, 17:03 pm
por NOB2014
Dudas con cola e INT_MAX lenguaje C. « 1 2 »
Programación C/C++
NOB2014 11 5,309 Último mensaje 22 Agosto 2016, 18:33 pm
por NOB2014
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines