Enviado em 20/05/2013 - 16:45h
E ai pessoal, beleza? Estou fazendo um programinha aqui simples pra fazer conversão de unidades, mas está dando erro de segmentação quando eu tento rodar o programa, será que alguém pode me ajudar?/*Programa para conversão de KJ em Kcal Autor: Djalma Lacerda de Oliveira Junior */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 1000 int cont; float x[MAX], y[MAX], xk[MAX], yk[MAX]; char name_input[MAX], name_output[MAX]; void Leitura(){ int i; FILE *input; printf ("Este programa converte dados de KJ para KCal\n"); printf ("Entre com o nome do arquivo de entrada: \n"); fgets (name_input, MAX, stdin); input = fopen (name_input, "r"); for (i = 0; i < MAX; i++){ fscanf (input, "%f", &x[i]); fscanf (input, "%f", &y[i]); if(y[i] == 0){ break; } cont = cont + 1; } fclose (input); } int Conversao(){ int i, n; n = 0; for (i = 0; i < cont - 1; i++){ yk[i] = (y[i] / 4.1868); } return 0; } int Impressao(){ int i; printf ("Entre com o nome do arquivo de saida: \n"); fgets (name_output, MAX, stdin); FILE *output; output = fopen (name_output, "w"); for (i = 0; i < cont-1; i ++){ fprintf (output, "%f ", x[i]); fprintf (output, "%f\n", yk[i]); } fclose (output); return 0; } int main(){ Leitura(); Conversao(); Impressao(); printf ("Os dados foram convertidos com sucesso!\n"); system ("pause"); return 0; }
Enviado em 20/05/2013 - 23:09h
Como você lê o nome do arquivo com fgets(), provavelmente o caráter de fim de linha está ficando no nome do arquivo. Com isso, é bem provável que a abertura do arquivo falhe, resultando num ponteiro nulo em input, o que explicaria plenamente o SIGSEGV.void chomp(char *str){ size_t len=strlen(str); if(len>0 && str[len-1]=='\n') str[len-1]=0; }
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Criando uma Infraestrutura para uma micro Empresa
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
problema para barrar sites/downloas via HTTPS. (2)
Liberação de alguns links no squid (21)