Hey guys,
I'm getting a stupid segmentation fault on a piece of code.
My .h is the following :
Code:
typedef struct sFicheiro{
char *ficheiro;
int nbits;
struct sFicheiro *proximo;
} Node, *Ficheiro;
typedef struct Ficheiros {
int numFicheiros;
Ficheiro lista;
} NFicheiros;
NFicheiros cria(void);
NFicheiros insereFicheiro(char *ficheiro, NFicheiros aux);
void showLib(NFicheiros lib);
And my .c is as following :
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "array.h"
NFicheiros cria (void)
{
NFicheiros aux;
aux.numFicheiros=0;
aux.lista=NULL;
return aux;
}
NFicheiros insereFicheiro(char *ficheiro, NFicheiros aux) {
printf("1\n");
Ficheiro novo = (Ficheiro*)malloc(sizeof (Node));
printf("2\n");
novo->ficheiro=(char*)malloc(sizeof(ficheiro)+1);
printf("3\n");
novo->nbits= read(ficheiro,stdin,strlen(ficheiro));
novo->proximo=NULL;
novo->ficheiro=strdup(ficheiro);
printf("4\n");
aux.lista->ficheiro=strdup(ficheiro);
printf("5\n");
if (aux.numFicheiros == 0)
{
printf("5\n");
//aux=(NFicheiros)malloc(sizeof(NFicheiros));
aux.numFicheiros=1;
aux.lista=novo;
printf("6\n");
return aux;
}
else
{
novo->proximo=aux.lista;
aux.lista=novo;
return aux;
}
}
void showLib(NFicheiros aux)
{
int j = 0;
if(aux.numFicheiros == 0) printf("Não existem ficheiros a ser monitorizados.\n");
else
{
while (aux.lista!=NULL)
{
printf("%s",aux.lista->ficheiro);
aux.lista->proximo;
}
}
}
int main ()
{
NFicheiros aux;
aux = cria();
aux=insereFicheiro("ola",aux);
//showLib(aux);
printf("%d \n",aux.numFicheiros);
}
And the output is :
Code:
1
2
3
4
Falha de segmentação
Why am I getting an error here :
aux.lista->ficheiro=strdup(ficheiro);
?
Thanks a lot.