行列をdatファイルに保存する関数について
下記のような初期化した行列と列ベクトルをdatファイルに保存するプログラムを描いたのですが、実際にこのコードを実行しても機能してくれません。ですがなぜか
init(m * n, 1, A);
の前に
printf("%d", m);
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void init(int n, float x, float * o) {
for(int i = 0; i < n; i++) {
o[i] = x;
}
}
void print(int m, int n, const float * x) {
for(int i = 0; i < m ; i++){
for(int j = 0; j < n; j++){
printf("%.4f ", x[j + i * n]);
}
printf("\n");
}
}
void save(const char *filename, int m, int n, const float *A, const float*b){
FILE *fp;
if((fp = fopen(filename,"wb"))==NULL){
printf("\aファイルをオープンできません。\n");
} else {
fwrite(A, sizeof(float), m * n, fp);
fwrite(b, sizeof(float), n, fp);
fclose(fp);
}
}
int main(int argc, char *argv[]){
int m = 0;
int n = 0;
float *A = malloc( sizeof(float) * (m*n));
float *b = malloc( sizeof(float) * n);
m = atoi(argv[1]);
n = atoi(argv[2]);
init(m * n, 1, A);
init(n, 2, b);
print(m, n, A);
print(1, n, b);
save("test.dat", m, n, A, b);
return 0;
}