Enviado em 12/07/2013 - 14:53h
Olá pessoal, estou fazendo um programa que lê três arquivos de dados e os reescreve em um arquivo. Isso é relativamente simples, entretanto estou trabalhando com arquivos grandes e consequentemente com vetores grandes, esse código funcionava para vetores pequenos, só que agora ele simplesmente parou de funcionar para qualquer situação. Compilo usando o gcc, não aparece nenhum erro, quando executo ele dá Falha de segmentação logo que começa a execução. Fiz o debug e novamente ele para a execução logo no início, não consegui chegar a conclusão alguma.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
int i,j,n,b,R,S;
float N,M,a;
double dens[5000000],vth[5000000], vrad[5000000],rad[5000000],theta[5000000],x[5000000],y[5000000],vx[5000000],vy[5000000],P, T;
R= 1200; /*Nrad*/
S= 3600; /*Nsec*/
N= 0.4; /*Rmin*/
M= 2.5; /*Rmax*/
FILE *arq1;
FILE *arq2;
FILE *arq3;
FILE *gaspol;
FILE *gascart;
/******************************Abertura dos arquivos**********************/
arq1 = fopen("gasdens.dat","r+");
arq2 = fopen("gasvtheta.dat","r+");
arq3 = fopen("gasvtheta.dat","r+");
gaspol = fopen("gaspol.dat","w");
gascart = fopen("gascart.dat","w");
/****************Leitura********************************/
i=0;
while(!feof(arq1))
{
fscanf(arq1,"%le",&dens[i]);
//printf("Do 1 %le ",dens[i]);
i++;
}
i=0;
while(!feof(arq2))
{
fscanf(arq2,"%le",&vth[i]);
//printf("Do 2 %le ",vth[i]);
i++;
}
i=0;
while(!feof(arq3))
{
fscanf(arq3,"%le",&vrad[i]);
//printf("Do 3 %le ",vrad[i]);
i++;
}
/********************Conversões e escrita**********************/
a=0;
for(n=0;n<R;n++)
{
for(j=a;j<(S*(n+1));j++)
{
rad[j]= N + ((M-N)*n/R);
}
a=j;
}
P=(M_PI*2/S);
T=-(2*M_PI/S);
for(b=0;b<=i;b++)
{
T= T + P;
if(T<=(2*M_PI))
{
theta[b]=T;
}
else
{
T=0;
theta[b]=0;
}
}
for(j=0;j<=i;j++)
{
x[j]=rad[j]*cos(theta[j]);
y[j]=rad[j]*sin(theta[j]);
vx[j]=vrad[j]*cos(theta[j])-vth[j]*rad[j]*sin(theta[j]);
vy[j]=vrad[j]*sin(theta[j])+vth[j]*rad[j]*cos(theta[j]);
}
for(b=0;b<=i;b++)
{
fprintf(gaspol," %le ",rad[b]);
fprintf(gaspol," %le ",theta[b]);
fprintf(gaspol," %le ",dens[b]);
fprintf(gaspol," %le ",vth[b]);
fprintf(gaspol," %le \n",vrad[b]);
}
for(b=0;b<=i;b++)
{
fprintf(gascart," %le ",x[b]);
fprintf(gascart," %le ",y[b]);
fprintf(gascart," %le ",dens[b]);
fprintf(gascart," %le ",vx[b]);
fprintf(gascart," %le \n",vy[b]);
}
printf("i %d \n",i);
printf("b %d \n",b);
printf("j %d \n",j);
printf("R %d \n",R);
printf("S %d \n",S);
printf("n %d \n",n);
fclose(arq1);
fclose(arq2);
fclose(arq3);
fclose(gaspol);
fclose(gascart);
}
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Dica para encontrar diversos jogos Indies criativos
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Dificuldade com Ocs 2.12.3 no Debian 13 com Apache2 - Can't load ... (0)
paginação dos favoritos não funciona no vivaolinux[BU... (4)
Driver da nvidia e desempenho em jogos (2)
A escola é altamente ineficiente e ineficaz! (13)
Sincronização Horario Estação de trabalho máquinas domínio com samba N... (2)