この関数は、ファイルから行列を読み取り、それを画面に出力します。
しかし、ライブラリがfpからファイルを読み取るときに何か問題があります。fscanf(fp, "%u", &elem);
に変更しても大丈夫ですuint8_t elem
。uint8_t *elem
理由を知りたい!プログラムがFILEポインタをライブラリに転送するときに注意すべき点。どうも!
主な機能:
int main(int argc, char *argv[]){
Matrix8g mat;
FILE *fp;
if((fp = fopen("mat.dat","r")) == NULL){
printf("can't open the file");
}
//matrix with 24 rows and 11 cols
mat.Make_from_file(fp, 24, 11);
//print the matrix
mat.Print();
fclose(fp);
}
ライブラリファイルの一部(Make_from_file):
/* Set the matrix from a file */
int Matrix8g::Make_from_file(FILE *fp, int rows, int cols){
int i, j;
uint8_t elem;
this->rr = rows;
this->cc = cols;
Resize_matrix();
try{
for(i = 0; i < rows; i++){
for(j = 0; j < cols; j++){
fscanf(fp, "%u", &elem);
Set(i, j, elem);
}
}
}catch(...){
NOTE("Error when set the matrix from a file");
return 0;
}
return 1;
}