Criei o código, compilou certinho, mas agora está dando falha na segmentação, alguém pode me ajudar?

1. Criei o código, compilou certinho, mas agora está dando falha na segmentação, alguém pode me ajudar?

Nicole Medina
nicolekm

(usa Outra)

Enviado em 18/06/2015 - 10:58h

#include <stdio.h>

int n;
char texto[40];
float time, xy, alt, bat, sig;

float altma(FILE *lista) //função para achar a altitude maxima
{
float ama = 0;
if (lista != NULL)
{
fgets(texto, 40, lista); //pula a primeira linha
do{
fscanf(lista, "%d %f %f %f %f %f\n", &n, &time, &xy, &alt, &bat, &sig);
if (alt > ama) // le todas as linhas e cada vez que acha um numero maior armazena em ama
{
ama = alt;
}
}while (fscanf(lista, "%d %f %f %f %f %f %f\n", &n, &time, &xy, &alt, &bat, &sig) != EOF);
}
return(ama);
}

int main()
{
FILE *lista;
lista = fopen("drone_data.txt", "r");
printf ("A altitude máxima é: %f \n" ,altma(lista));

return(0);
}



  


2. MELHOR RESPOSTA

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 18/06/2015 - 12:30h

Então, modificando seu código, corrigindo os erros e tirando as variaveis globais,
Não gosto de entregar código pronto, mas vou abrir outra exceção.


#include <stdio.h>

// Não usar VAR's globais
// Passe por parametro

// Recebe os parametros como ponteiros para que as modificações feitas aqui se apliquem tambem no main!
float altma(FILE *lista, int *n, char texto[], float *time,float *xy,float *alt,float *bat,float *sig){ //função para achar a altitude maxima
float ama = 0;
if (lista != NULL){
fgets(texto, 40, lista); //pula a primeira linha
do{
fscanf(lista, "%d %f %f %f %f %f\n", n, time, xy, alt, bat, sig);
if (*alt > ama){ // le todas as linhas e cada vez que acha um numero maior armazena em ama
ama = *alt;
}
}while (fscanf(lista, "%d %f %f %f %f %f\n", n, time, xy, alt, bat, sig) != EOF);
}
return(ama);
}

int main(){

// As variaveis globais no main
int n = 0;
char texto[40];
float time = 0, xy = 0, alt = 0, bat = 0, sig = 0;
// Nome do arquivo soh para a verificacao se o arquivo foi aberto
char arq[] = {"drone_data.txt"};


FILE *lista;
lista = fopen(arq, "r");

// Verifica se o arquivo foi aberto
if(lista == NULL){
printf("[ERRO!] Arquivo %s não pode ser aberto!\n\n",arq);
return 1;
}

printf ("A altitude máxima é: %f \n" ,altma(lista,&n,texto,&time,&xy,&alt,&bat,&sig));

// Mostra que funcionou!
printf("%d %f %f %f %f %f\n", n, time, xy, alt, bat, sig);

return 0;
}


No arquivo não existe o "sinal", então ele se manteve 0.

Qualquer dúvida só perguntar!

Espero ter ajudado

Se ajudei, marque o tópico como resolvido e clique em melhor resposta!

[]'s

T+

--
http://piadasnerds.com/wp-content/uploads/2011/08/grafico_souProgramador.png

3. Re: Criei o código, compilou certinho, mas agora está dando falha na segmentação, alguém pode me aju

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 18/06/2015 - 11:09h

Compilar não é motivo de funcionar, lembre-se disto!

O que existe no arquivo drone_data.txt?

Coloque os códigos entre as tag [code]"código aqui"[/code]

Espero ter ajudado

[]'s

T+

--
http://piadasnerds.com/wp-content/uploads/2011/08/grafico_souProgramador.png


4. Re: Criei o código, compilou certinho, mas agora está dando falha na segmentação, alguém pode me ajudar?

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 18/06/2015 - 11:30h


O arquivo que vc está tentando ler existe? Está no mesmo local que o programa compilado está executando?


5. Re: Criei o código, compilou certinho, mas agora está dando falha na segmentação, alguém pode me aju

Nicole Medina
nicolekm

(usa Outra)

Enviado em 18/06/2015 - 12:03h

Sim, sim o arquivo está na mesma pasta que o programa, é um lista com os dados do drone que estão sendo analisados


6. Re: Criei o código, compilou certinho, mas agora está dando falha na segmentação, alguém pode me ajudar?

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 18/06/2015 - 12:06h

nicolekm escreveu:

Sim, sim o arquivo está na mesma pasta que o programa, é um lista com os dados do drone que estão sendo analisados


Ok, mas o que tem no arquivo?

Espero ter ajudado

[]'s

T+

--
http://piadasnerds.com/wp-content/uploads/2011/08/grafico_souProgramador.png


7. Re: Criei o código, compilou certinho, mas agora está dando falha na segmentação, alguém pode me ajudar?

Nicole Medina
nicolekm

(usa Outra)

Enviado em 18/06/2015 - 12:17h

A primeira linha é "time x y altitude battery signal" e depois tem mais 195 linhas tipo essa "0 0.00 0.00 0.00 100.00 80.00" que mostram tempo, deslocamento, altitude, nivel da bateria e sinal.


8. Re: Criei o código, compilou certinho, mas agora está dando falha na segmentação, alguém pode me ajudar?

Nicole Medina
nicolekm

(usa Outra)

Enviado em 18/06/2015 - 12:57h

Brigada!!!!! Agora ta funcionando!!
Valeu pela ajuda :)


9. Re: Criei o código, compilou certinho, mas agora está dando falha na segmentação, alguém pode me ajudar?

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 18/06/2015 - 17:21h

nicolekm escreveu:

Brigada!!!!! Agora ta funcionando!!
Valeu pela ajuda :)


De nada ;)

Espero ter ajudado

[]'s

T+

--
http://piadasnerds.com/wp-content/uploads/2011/08/grafico_souProgramador.png






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts