almacenar vector de caracteres en una lista enlazada

Iniciado por Roder_Wesky, 24 Octubre 2017, 20:10 PM

0 Miembros y 1 Visitante están viendo este tema.

Roder_Wesky

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.



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct _nodo{
       char caracter;
       int repeticion;
       struct _nodo *sig;
}_Nodo;
typedef _Nodo *_pNodo;
_pNodo CrearLista(char caracter);
_pNodo Insertar(char caracter, _pNodo ListaInicial);


int main()
{
   struct _pNodo* apunta =NULL;
   struct _pNodo* aux2=NULL;
   struct _pNodo* inicio=NULL;
   _pNodo NuevoNodo;
   char a,aux;
   int cont=0,j,i,k;
   FILE *archivo;
   archivo=fopen("texto.txt","r");
   if (archivo == NULL)
       {
           printf("\nError de apertura del archivo. \n\n");
       }
       else
       {
           printf("\nEl contenido del archivo de prueba es: \n\n");
       while((a = fgetc(archivo)) != EOF)
   {
cont++;
   }
   char v[cont];
   rewind(archivo);


   for(i = 0; !feof(archivo);i++)
       {
       aux='0';
       for(j=0;aux!=EOF;j++)
       {
           aux= fgetc(archivo);
           if(aux!=EOF)
       {
           v[j] = aux;
           }
       }
       for(i=0;i<=cont;i++)
       {
       Insertar(v[i],NuevoNodo);
       }
       }
       fclose(archivo);
       }

       system("pause");
       return 0;
}
              // printf("asd");
_pNodo CrearLista(char caracter)
{
   _pNodo Lista;

   Lista = (_pNodo) malloc (sizeof(_Nodo));
   Lista->caracter = caracter;
   Lista->sig = NULL;

   return Lista;
}
_pNodo Insertar(char caracter, _pNodo ListaInicial)
{
   _pNodo NuevoNodo;
   _pNodo Auxiliar = ListaInicial;
   NuevoNodo =  malloc(sizeof(_Nodo));

   NuevoNodo->caracter = caracter;
   NuevoNodo->sig = NULL;

   if (ListaInicial->sig == NULL)
   {
       ListaInicial->sig = NuevoNodo;

   }
   else
   {
       while(Auxiliar->sig != NULL)
       {
           Auxiliar =  Auxiliar->sig;
       }
       Auxiliar->sig = NuevoNodo;

   }
   return NuevoNodo;
}

Gracias.  :D

Gallu

Qué mensajes de error te da ?? segmentación fault ? , postea los mensajes por favor.

Probaste a debugar ?

Saludos
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.