[1] Comentário enviado por
elgio em 20/03/2010 - 19:30h:
char *caracter;
fread(caracter, 1, 1, descritor);
ERRO!
caractere é um ponteiro não alocado para char. Ao se fazer o fread o caractere lido será colocado em uma posição de memória NÃO ALOCADA podendo gerar um segmentation fault no Linux!!!
Devia ser:
char caracter;
fread(&caracter, 1, 1, descritor);
Ou apenas caracter = fgetc(descritor);
O uso do gets também é complicado e o gcc RECLAMA de seu uso na compilação:
cc lixo.c -o lixo
/tmp/ccKg1gkQ.o: In function `main':
lixo.c:(.text+0x12): warning: the `gets' function is dangerous and should not be used.
veja, ele diz com TODAS as letras: dangerous e que não deve mais ser usada. Os problemas são de overflow.
[4] Comentário enviado por
xcolares em 23/06/2010 - 23:52h:
Gostaria de saber como faço para ler um arquivo sendo que só o que me interessa nele e a linha que começa com //# e termina também com //# como o exemplo abaixo:
esse é o arquivo, o que quero dele é somente isto:
float Tf=0.058e-6, Tt=500e-6, a1=1.93147180e0/Tf, a2=2.558427881e0/Tt, t0=log(a1/a2)/(a1-a2), Ao=exp(-a1*t0)-exp(-a2*t0), omegao=4.0*atan(1.0)/(3.0*Tf);
for (n=1; n<=nt; n++){
if((n*dt)<=(1.5*Tf)){
fonte[n]= (vmax/Ao)*(exp(-a1*(float)(n)*dt)-exp(-a2*(float)(n)*dt))*powf((sin(omegao*(float)(n)*dt)),2.0) ;
}else
fonte[n]= (vmax/Ao)*(exp(-a1*(float)(n)*dt)-exp(-a2*(float)(n)*dt));
}
Se alguém puder me ajudar agradeço.
Adolfo Colares
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const float dt = 4.240384E-10;
nt=t/dt;
float fonte[nt+1];
//############### dados inseridos pelo usuario ###############
float Tf=0.058e-6, Tt=500e-6, a1=1.93147180e0/Tf, a2=2.558427881e0/Tt, t0=log(a1/a2)/(a1-a2), Ao=exp(-a1*t0)-exp(-a2*t0), omegao=4.0*atan(1.0)/(3.0*Tf);
for (n=1; n<=nt; n++){
if((n*dt)<=(1.5*Tf)){
fonte[n]= (vmax/Ao)*(exp(-a1*(float)(n)*dt)-exp(-a2*(float)(n)*dt))*powf((sin(omegao*(float)(n)*dt)),2.0) ;
}else
fonte[n]= (vmax/Ao)*(exp(-a1*(float)(n)*dt)-exp(-a2*(float)(n)*dt));
}
//############################################################
FILE *fonte_dat=fopen("dats/fonte.dat","w+");
for(n=0;n<=nt;++n){
fprintf(fonte_dat,"%E\n",fonte[n]);
}
fclose(fonte_dat);