Falha de segmentação [EDITADO]

1. Falha de segmentação [EDITADO]

Vitória
lemosvit

(usa Ubuntu)

Enviado em 26/09/2017 - 08:52h

Bom, to tentando fazer um programa que lê dados e gera um outro arquivos com dados de frequencia com o objetivo de montar um histograma, não entendo muito de programação rs, se alguém puder me dar uma ajuda, ficarei muito grata. já revisei tudo e provavelmente o erro tá no algoritmo (nao sei aa) mas não consigo enxergar, segue abaixo o programa:

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

int main() {

int bin;
double Xmax, Xmin, X, Dx, hist[50]={0};


FILE *gravidade=NULL; //
FILE *histograma=NULL;

printf("Digite o nome do arquivo:\n");
fscanf (gravidade,"%lf", &X);

gravidade=fopen("gravidade.dat", "r");

if (gravidade==NULL) {
printf("O arquivo não está no computador\n");
}
return 1;


printf("Insira o valor mínimo e máximo, respectivamente, para o histograma:\n");
scanf ("%lf %lf", &Xmin, &Xmax);
bin=0;
Dx=(Xmax-Xmin)/50;

while (fscanf (gravidade,"%lf",&X) != EOF)

{
bin++;
bin=(X-Xmin)/Dx;
hist[bin]=hist[bin]+1;
}


gravidade = fopen("histograma.dat", "w");
fprintf(histograma, "%f\n", X);

fclose(gravidade);
fclose(histograma);

return 0;
}


plot twist: tentei achar o erro com o comando gdb: e apareceu isso
Program received signal SIGSEGV, Segmentation fault.
__isoc99_fscanf (stream=0x0, format=0x804866a "%lf") at isoc99_fscanf.c:30
30 isoc99_fscanf.c: Arquivo ou diretório não encontrado.

que no caso é essa linha: while (fscanf (gravidade,"%lf",&X) != EOF) mas mesmo assim não sei o que fazer, porque o arquivo com dados está no pc com o nome gravidade.dat


  


2. Re: Falha de segmentação [EDITADO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 26/09/2017 - 09:49h

Veja uma coisa

lemosvit escreveu:

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

int main() {

int bin;
double Xmax, Xmin, X, Dx, hist[50]={0};


FILE *gravidade=NULL; // <--- (1)
FILE *histograma=NULL;

printf("Digite o nome do arquivo:\n");
fscanf (gravidade,"%lf", &X); // <--- (2)

gravidade=fopen("gravidade.dat", "r"); // <--- (3)


Viu? Você primeiro tenta fazer uma leitura (2) a partir de um arquivo designado por um ponteiro nulo (1), e só depois tenta abrir o arquivo (3). Por favor, conserte essa ordem.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts