C++ 库收到文件指针并读取文件时出错
该函数从文件中读取矩阵,并将其打印在屏幕上。但是,当库fscanf(fp、%u、&elem)出现错误时代码>从fp读取文件 当我将C++ 库收到文件指针并读取文件时出错,c++,file,shared-libraries,C++,File,Shared Libraries,该函数从文件中读取矩阵,并将其打印在屏幕上。但是,当库fscanf(fp、%u、&elem)出现错误时从fp读取文件 当我将uint8\u t元素更改为uint8\u t*元素时,它是正常的 我想知道为什么!程序将文件指针传输到库时应注意的事项。谢谢 主要功能: int main(int argc, char *argv[]){ Matrix8g mat; FILE *fp; if((fp = fopen("mat.dat","r")) == NULL){
uint8\u t元素
更改为uint8\u t*元素
时,它是正常的
我想知道为什么!程序将文件指针传输到库时应注意的事项。谢谢
主要功能:
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);
}
库文件的一部分(从库文件生成库):
/*从文件中设置矩阵*/
int Matrix8g::从_文件生成_(文件*fp,int行,int列){
int i,j;
uint8元素;
这->rr=行;
这->cc=cols;
调整_矩阵()的大小;
试一试{
对于(i=0;i
如果您查看此参考资料
您将看到,fscanf需要一个对提取的日期应该写入的数据结构的引用。fscanf从给定的文件/流复制到给定的指针。它没有关于数据类型的信息。它使用格式字符串来解释输入中的字节。它类似于类型铸造。fscanf无法知道目标结构需要哪种类型,但指针允许直接复制操作。是的,我误用了fscanf,我将uint8_t elem
更改为unsigned int elem
,现在一切正常。
/* 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;
}