Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Roder_Wesky en 24 Octubre 2017, 20:10 pm



Título: almacenar vector de caracteres en una lista enlazada
Publicado por: Roder_Wesky en 24 Octubre 2017, 20:10 pm
hola, estoy tratando de almacenar un vector de caracteres que proviene de un fichero, en una lista, llevo esto del codigo pero no entiendo el motivo porque el programa se cae.
creo que es un error en la llamada a la función o en la asignacion de NuevoNodo.

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. typedef struct _nodo{
  7.        char caracter;
  8.        int repeticion;
  9.        struct _nodo *sig;
  10. }_Nodo;
  11. typedef _Nodo *_pNodo;
  12. _pNodo CrearLista(char caracter);
  13. _pNodo Insertar(char caracter, _pNodo ListaInicial);
  14.  
  15.  
  16. int main()
  17. {
  18.    struct _pNodo* apunta =NULL;
  19.    struct _pNodo* aux2=NULL;
  20.    struct _pNodo* inicio=NULL;
  21.    _pNodo NuevoNodo;
  22.    char a,aux;
  23.    int cont=0,j,i,k;
  24.    FILE *archivo;
  25.    archivo=fopen("texto.txt","r");
  26.    if (archivo == NULL)
  27.        {
  28.            printf("\nError de apertura del archivo. \n\n");
  29.        }
  30.        else
  31.        {
  32.            printf("\nEl contenido del archivo de prueba es: \n\n");
  33.        while((a = fgetc(archivo)) != EOF)
  34.    {
  35. cont++;
  36.    }
  37.    char v[cont];
  38.    rewind(archivo);
  39.  
  40.  
  41.    for(i = 0; !feof(archivo);i++)
  42.        {
  43.        aux='0';
  44.        for(j=0;aux!=EOF;j++)
  45.        {
  46.            aux= fgetc(archivo);
  47.            if(aux!=EOF)
  48.        {
  49.            v[j] = aux;
  50.            }
  51.        }
  52.        for(i=0;i<=cont;i++)
  53.        {
  54.        Insertar(v[i],NuevoNodo);
  55.        }
  56.        }
  57.        fclose(archivo);
  58.        }
  59.  
  60.        system("pause");
  61.        return 0;
  62. }
  63.               // printf("asd");
  64. _pNodo CrearLista(char caracter)
  65. {
  66.    _pNodo Lista;
  67.  
  68.    Lista = (_pNodo) malloc (sizeof(_Nodo));
  69.    Lista->caracter = caracter;
  70.    Lista->sig = NULL;
  71.  
  72.    return Lista;
  73. }
  74. _pNodo Insertar(char caracter, _pNodo ListaInicial)
  75. {
  76.    _pNodo NuevoNodo;
  77.    _pNodo Auxiliar = ListaInicial;
  78.    NuevoNodo =  malloc(sizeof(_Nodo));
  79.  
  80.    NuevoNodo->caracter = caracter;
  81.    NuevoNodo->sig = NULL;
  82.  
  83.    if (ListaInicial->sig == NULL)
  84.    {
  85.        ListaInicial->sig = NuevoNodo;
  86.  
  87.    }
  88.    else
  89.    {
  90.        while(Auxiliar->sig != NULL)
  91.        {
  92.            Auxiliar =  Auxiliar->sig;
  93.        }
  94.        Auxiliar->sig = NuevoNodo;
  95.  
  96.    }
  97.    return NuevoNodo;
  98. }
  99.  
Gracias.  :D


Título: Re: almacenar vector de caracteres en una lista enlazada
Publicado por: Gallu en 25 Octubre 2017, 09:00 am
Qué mensajes de error te da ?? segmentación fault ? , postea los mensajes por favor.

Probaste a debugar ?

Saludos