Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matheus Weber

Segmentation Fault

Recommended Posts

Boa noite, eu comecei a estudar pra uma prova que eu tenho sexta, mas tá dando um erro no meu código que a principio não era pra dar.

 

Tipo, na aula eu compilei esses arquios com Geany e eles funcionaram perfeitamente, aqui em casa eu to compilando pelo terminal do Ubuntu e fica dando Segmentation Fault(core dumped), só que é exatamente o mesmo código e o mesmo sistema operacional, alguém sabe o porquê disso? Será que é o jeito que eu compilo?

 

Vou postar o código do arquivo que está dando o erro:

 

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



int le_arquivo(char* c, ListaItens* lista){
FILE *fp;
char linha[250];
char *aux;
int i;
i=0;
if((fp = fopen(c,"r"))==NULL){
	printf("Arquivo não encontrado");
	exit(1);
}
fp = fopen(c,"r");
while(fgets(linha,sizeof(linha),fp)!=NULL){


	[b]Item produto;

	aux = strtok(linha,";"); 

	produto.descricao = (char *)malloc(strlen(aux)+1);

	strcpy(produto.descricao,aux);

	produto.quantidade = atoi(strtok (NULL,";"));

	produto.preco = atof(strtok (NULL,";"));

	lista->lista[i] = produto;
	i++;[/b]

}
fclose(fp);
return i;
}

 

Eu sei que o erro está dentro daquele while que eu deixei em negrito(depurei e acho que tá ali), mas não sei aonde.

Eu sei também que é nessa função o erro, então não postei todo o código pra não ficar muito grande o topico.

Eu compilo pelo terminal usando o comando:

 

cc main_p01.c pratica01.h pratica01.c -o pratica01

 

Na aula eu compilei no Geany, mas eu não lembro quais os Comandos de Construção pra compilar vários arquivos, por isso que eu fui no terminal aqui, se alguém souber os comandos também :D.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por que não retira o segundo fopen? Ele é desnecessário, já que abriu no if.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.