üstte verdiğim basit hali idi (biz onla yırtmıştık

) mantığı ordan anlayabilirsin
ama senin isteklerine göre tüm istediğin özellikler olan program kolay gelsin
-------
#include<stdio.h>
#include<stdlib.h>
FILE *A;
FILE *B;
FILE *C;
void main()
{
int x[2],y[2],k,i,j,d[2],a[10][10],b[10][10],c[10][10];
/* Dosyalarin Acildigi Bolum*/
A=fopen("A.txt","r");
if(A==NULL)
{
printf("a dosyasi acilmadi");
exit(1);
}
B=fopen("B.txt","r");
if(B==NULL)
{
printf("b dosyasi acilmadi");
exit(1);
}
C=fopen("C.txt","w+");
if(C==NULL)
{
printf("carpim dosyasinda hata");
exit(1);
}
/*Dosyadan Okutuldugu Bolum*/
for( i=0;i<2;i++){fscanf(A, "%d",&x[i]);}
for( i=0;i<2;i++){fscanf(B, "%d",&y[i]);}
/*Ekranda Gosterildigi Bolum*/
printf("A matrisi satir sutun degerleri");
for(i=0;i<2;i++){printf("%d",x[i]);}
printf("B matrisi satir sutun degerleri");
for(k=0;k<2;k++){printf("%d",y[k]);}
/*kontrollerin yapıldığı*/
if(x[1]!=y[0])
{
printf("matrisler carpilamaz!");
exit(1);
}
if(x[1]>10||x[0]>10)
{
printf("10 dan buyuk deger girmeyin!!");
printf("");
exit(1);
}
if(y[0]>10||y[1]>10)
{
printf("10 dan buyuk deger girmeyin!!");
exit(1);
}
/* matrislerin dosyadan okutulduğu bolum*/
for(i=0;i<x[0];i++)
{
for(j=0;j<x[1];j++){fscanf(A,"%d",&a[i][j]);}
}
for(i=0;i<y[0];i++)
{
for(j=0;j<y[1];j++){fscanf(B,"%d",&b[i][j]);}
}
/* matrislerin carpıldığı bolum*/
for(i=0;i<x[0];i++)
{
for(j=0;j<y[1];j++)
{
c[i][j]=0;
for(k=0;k<y[0];k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
fprintf(C,"%d",x[0]);
fprintf(C,"%d",y[1]);
for(i=0;i<x[0];i++)
{
for(j=0;j<y[1];j++)
{
fprintf(C, "%d ",c[i][j]);
}
fprintf(C,"");
}
fclose(A);
fclose(B);
fclose(C);
}