c言語についてです。 まず最初に足算か掛算を選んだあと、2×2行列が書かれた外部ファイルを2つ読み込んでその二つの行列について掛算か足算選んだ方の計算を行うというプログラムを作成したのですが、まずキーボード入力で行った時にはうまくいったのに scanfをfopen,fscanfに置き換えたところどんな値をテキストファイルに書き込んでも結果が 0 0 0 0 になってしまいました。何が原因かわかりません。 以下作成したプログラムです。 #include<stdio.h> #include<math.h> #include<string.h> #define N 100 int main(void){ int i,j,m; double a[2][2],b[2][2]; double c[2][2]; double sum(double[2][2],double[2][2]); double product(double[2][2],double[2][2]); printf("1か2を入力¥n"); printf("1:二つの2×2行列の和¥n"); printf("2:二つの2×2行列の積¥n"); scanf("%d",&m); FILE *fp,*fq; fp=fopen("gyoretu1.txt","r"); fq=fopen("gyoretu2.txt","r"); for(i=0;i<2;i++){ for(j=0;j<2;j++){ fscanf(fp,"%d",&a[i][j]); } } fclose(fp); for(i=0;i<2;i++){ for(j=0;j<2;j++){ fscanf(fq,"%d",&b[i][j]); } } fclose(fq); if(m==1){ printf("和は¥n"); for(i=0;i<2;i++){ for(j=0;j<2;j++){ printf("%lf",sum(a,b)); } printf("¥n"); } } else if(m==2){ printf("積は¥n"); for(i=0;i<2;i++){ for(j=0;j<2;j++){ printf("%lf",product(a,b)); } printf("¥n"); } } else { printf("計算できません¥n"); } return 0; } double sum(double a[2][2],double b[2][2]){ int i,j,k; int *s; int is; s=&is; double c[i][j]; for(i=0;i<2;i++){ for(j=0;j<2;j++){ *s= 0; for(k=0;k<2;k++){ *s= a[i][k]+b[k][j]; c[i][j]=*s; } } } return *s; } double product(double a[2][2],double b[2][2]){ int i,j,k; int *s; int is; s=&is; double c[i][j]; for(i=0;i<2;i++){ for(j=0;j<2;j++){ *s= 0; for(k=0;k<2;k++){ *s+= a[i][k]*b[k][j]; c[i][j]=*s; } } } return *s; }
C言語関連