#include #include #include void mul(int **a, int **b, int **c, int m, int k, int n) { int i , j , l ; for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { c[i][j] = 0; for (l = 0; l < k; l++) { c[i][j] += a[i][l] * b[l][j]; } } } } void read_matrix(FILE *file,int *m,int *k,int *n){ char line[1000]; // int *m = 0, *k1 = 0, *k2 = 0, *n = 0; int *k1 , *k2; int i, j, temp; char *token; while (fgets(line, sizeof(line), file)) { if (strlen(line) <= 1) { break; } j = 0; token = strtok(line, " \n"); while (token != NULL) { j++; token = strtok(NULL, " \n"); } if (*k1 == 0) *k1 = j; m++; } // 讀取第二個矩陣 while (fgets(line, sizeof(line), file)) { j = 0; token = strtok(line, " \n"); while (token != NULL) { j++; token = strtok(NULL, " \n"); } if (*n == 0) *n = j; k2++; *k2 = k2; } printf("OK"); // if (*k1!=*k2) return 1; // if (*k1==*k2){ } int main() { FILE *file ; int *m , *k , *n ; int i, j, temp; char *token; if ((file = fopen("matrix_input.txt", "r")) == NULL){ printf("無法打開文件\n"); return 1; } // 讀取第一個矩陣 // while (fgets(line, sizeof(line), file)) { // if (strlen(line) <= 1) { // break; // } // j = 0; // token = strtok(line, " \n"); // while (token != NULL) { // j++; // token = strtok(NULL, " \n"); // } // if (k1 == 0) k1 = j; // // m++; // } // // // 讀取第二個矩陣 // while (fgets(line, sizeof(line), file)) { // j = 0; // token = strtok(line, " \n"); // while (token != NULL) { // j++; // token = strtok(NULL, " \n"); // } // if (n == 0) n = j; // k2++; // } read_matrix(file,&m,&k,&n); printf("第一個矩陣: %d 行 %d 列\n", *m, *k); printf("第二個矩陣: %d 行 %d 列\n", *k, *n); printf("m = %d, k1 = %d, k2 = %d, n = %d\n\n", *m, *k , *k , *n); //根據m,k,n配置記憶體空間 int **arr_a = (int**)malloc(m * sizeof(int*)); int **arr_b = (int**)malloc(k * sizeof(int*)); int **arr_c = (int**)malloc(m * sizeof(int*)); for(i=0;i