Добрый день!
Написал прогу которая читает файлы двух типов int и float.Читает в формате матрицы, размером N*A и N*A*T.Настройка осуществляется при вводе.Так вот массивы данных типа int читает, а вот тип float не читает!Не пойму, почему?


//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused



int main(void)
{
int F_PROSMOTR(char*tip_danux,char*name,int RAZ_N,int RAZ_A,int RAZ_T,int SMESH);

int RAZ_N,RAZ_A,RAZ_T,SMESH;
char *name,*tip_danux;

printf("Tip danux->");
scanf("%s",tip_danux);

printf("Imia faila=");
scanf("%s",name);

printf("Pervoe izmerenie N=");
scanf("%d",&RAZ_N);

printf("Vtoroe izmerenie A=");
scanf("%d",&RAZ_A);

printf("Tretie izmerenie T=");
scanf("%d",&RAZ_T);

printf("Smeshenie B=");
scanf("%d",&SMESH);


F_PROSMOTR(tip_danux,name, RAZ_N, RAZ_A, RAZ_T, SMESH);
free(name);free(tip_danux);
return 0;
}

int F_PROSMOTR(char*tip,char*imia,int N,int A,int T,int B)
{
FILE *fp;
int i,j,k;
char *tp1,*tp2;
int *ia;
float *fa;

tp1="int";
tp2="float";



fp=fopen(imia,"rb");

if(A==0){A=1;j=0;}
if(T==0){T=1;k=0;}

ia=(int*)calloc((N-B)*A*T,sizeof(int));
fa=(float*)calloc((N-B)*A*T,sizeof(float));

if(*tip==*tp1)
{
/*Vubor razmernosti rassmatrivaemogo massiva */
if(A==1)
{
fread(fa,sizeof(int),(N-B)*A*T,fp);
fclose(fp);

for(i=0;i<N;i++)
{
printf("\n\n\nN=%d",(i+1));
for(k=0;k<T;k++) printf("\t %d",*(ia+i*T+k));
}
getch();
free(ia);free(fa);

return 0;
}

if(T==1)
{
fread(ia,sizeof(int),(N-B)*A*T,fp);
fclose(fp);

for(i=0;i<N;i++)
{
printf("\n\n\nN=%d",(i+1));
for(k=0;k<A;k++) printf("\t%d",*(ia+i*A+k));
}
getch();
free(ia);free(fa);
return 0;
}
fread(ia,sizeof(int),(N-B)*A*T,fp);
fclose(fp);

for(i=0;i<N-B;i++)
{
printf("\n\n %d-",B+i+1);
for(j=0;j<A;j++)
{
for(k=0;k<T;k++) printf("\t%d",*(ia+(i*A+j)*T+k));
printf("\t");
}
}
getch();
free(ia);free(fa);
return 0;
}

if(*tip==*tp2)
{
/*Vubor razmernosti rassmatrivaemogo massiva */
if(A==1)
{
fread(fa,sizeof(float),(N-B)*A*T,fp);
fclose(fp);

for(i=0;i<N;i++)
{
printf("\n\n\nN=%d",(i+1));
for(k=0;k<T;k++) printf("\t %.2f",*(fa+i*T+k));
}
getch();
free(ia);free(fa);

return 0;
}

if(T==1)
{
fread(fa,sizeof(float),(N-B)*A*T,fp);
fclose(fp);

for(i=0;i<N;i++)
{
printf("\n\n\nN=%d",(i+1));
for(k=0;k<A;k++) printf("\t%.2f",*(fa+i*A+k));
}
getch();
free(ia);free(fa);
return 0;
}
fread(fa,sizeof(float),(N-B)*A*T,fp);
fclose(fp);

for(i=0;i<N-B;i++)
{
printf("\n\n %d-",B+i+1);
for(j=0;j<A;j++)
{
for(k=0;k<T;k++) printf("\t%.2f",*(fa+(i*A+j)*T+k));
printf("\t");
}
}
getch();
free(ia);free(fa);
return 0;
}

return 0;
}