Ir para conteúdo
Fórum Script Brasil

Ed-ek Soares Silva

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que Ed-ek Soares Silva postou

  1. Olá a todos do fórum, estou com um problema em alguns programas em C. Usava o fedora 20, depois passei a usar o ubuntu 14.10, em ambos usei o compilador GCC e o problema persiste. Trabalho com grandes quantidades de dados, arquivos de dados com 100 mil linhas ou mais, que são tabelas com números. Então, para estudar estes dados uso programação em C para ler os arquivos, efetuar alguma operação, e em seguida escrever uma saída. O problema é que recentemente, acredito que depois de alguma atualização do meu compilador GCC (versão atual 4.9.1), alguns programas começaram a apresentar na execução "Falha de segmentação (imagem do núcleo gravada)", quando eu lido com esses arquivos de grande número de linhas. Eis um exemplo: #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #define n 378434 int main() { FILE *file1; FILE *file2; file1 = fopen("kepler_cut.dat", "r"); file2 = fopen("kepler.170k.dat", "w"); float Kp[n], Gc[n], logAge[n], MH[n], m_ini[n], logL[n], logT[n], logg[n], m_M0[n], Av[n], m2m1[n], mbol[n], U[n], B[n], V[n], R[n], I[n], J[n], H[n], K[n], Mact[n]; long int i, rnd; rnd=0; srand( (unsigned)time(NULL) ); for (i=0; i < n; i++){ if(fscanf(file1, " %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f\n", &Kp[i], &Gc[i], &logAge[i], &MH[i], &m_ini[i], &logL[i], &logT[i], &logg[i], &m_M0[i], &Av[i], &m2m1[i], &mbol[i], &U[i], &B[i], &V[i], &R[i], &I[i], &J[i], &H[i], &K[i], &Mact[i])){}; } for (i=0; i < 168842; i++){ rnd = rand() % n -1; fprintf(file2, " %.3f\t%.0f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\n", Kp[rnd], Gc[rnd], logAge[rnd], MH[rnd], m_ini[rnd], logL[rnd], logT[rnd], logg[rnd], m_M0[rnd], Av[rnd], m2m1[rnd], mbol[rnd], U[rnd], B[rnd], V[rnd], R[rnd], I[rnd], J[rnd], H[rnd], K[rnd], Mact[rnd]); } fclose(file1); fclose(file2); return(0); } Este programa lê um arquivo de 378434 linhas, criando um vetor para cada coluna, escolhe aleatoriamente 168842 e escreve no arquivo de saída. Usando o gdb ele me diz que a falha ocorre na linha que faz a abertura do arquivo: file1 = fopen("kepler_cut.dat", "r"); Não consegui identificar o problema.
×
×
  • Criar Novo...