从C中的文件读取二进制整数

若昂席尔瓦

整夜我一直在寻找答案并且还没有入睡,但是,我无法使其工作……我有一个二进制文件,我想读取它并获取每个整数的值……这里是一些代码:

FILE *f;
char ch;
char t1[3];
int l, c, grayScale, i, j;
int p =0;


f = fopen(pgm, "rb");

(...)

c = 0;
l = 0;


fscanf(f, "%d", &c);

fscanf(f, "%d", &l);

fscanf(f, "%d", &grayScale);


A = alocar_memoria_matriz(l,c);

for(i = 0; i<l; i++){
    for(j=0; j<c; j++){
        if(fread(&p,sizeof(int),1,f) !=1){
             fprintf(stderr, "\nError!\n");
             fclose(f);
             free_memoria_matriz(A,l);
             return NULL;
        }else if(p>grayScale|| p<0){
            fprintf(stderr, "\nError!\n");
            fclose(f);
            free_memoria_matriz(A,l);
            return NULL;
        }else{
        A[i][j] = (tdf_elemento) p;

    }
}
}

我做了一些printfp(用%d和%i),得到的值是-1161602550、1213357911、994462027 ...我真的不知道发生了什么,我也试图将p更改为char [5],但是到目前为止还没有工作...预先谢谢...

土豆泥

“二进制”打开模式不会更改fscanf文件解析的方式它的唯一作用是(也许)防止stdio工具读取文件时\r\n行尾转换为\n

要将stdio文件读取f为整数i,可以执行以下操作fread( & i, sizeof i, 1, f )但是请注意,这不尊重字节顺序。没有显式的字节交换,您的二进制格式将取决于平台的字节序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

读取整数的二进制文件

来自分类Dev

从二进制文件C ++读取16位整数

来自分类Dev

使用ifstream从C ++文件中读取二进制无符号短整数

来自分类Dev

在C ++中向文件流写入/读取二进制字节/整数/长

来自分类Dev

c ++从二进制文件中读取整数,缺少一些数据

来自分类Dev

从二进制文件中读取

来自分类Dev

读取二进制文件c

来自分类Dev

在C ++中读取二进制文件的正确方法?

来自分类Dev

在Java中读取C ++二进制文件

来自分类Dev

在C ++中从文件读取ASCII和二进制

来自分类Dev

从C中的二进制文件读取

来自分类Dev

使用StringStream在C ++中读取二进制文件

来自分类Dev

在C ++中读取压缩的二进制文件

来自分类Dev

从 C 中的二进制文件读取值

来自分类Dev

二进制文件写入后读取负整数

来自分类Dev

写入整数并从C ++中的二进制文件中读取它们:字节数错误

来自分类Dev

从R中的二进制<8位读取整数

来自分类Dev

在Python中从二进制文件读取4个字节的整数

来自分类Dev

从文件中读取二进制数并将其保存为整数

来自分类Dev

使用迭代器从文件中读取二进制整数列表

来自分类Dev

在C中的二进制文件中的某个整数之后插入一个整数

来自分类Dev

二进制文件中的字节到整数

来自分类Dev

如何从二进制文件中获取整数值

来自分类Dev

在Spark Scala中读取二进制文件

来自分类Dev

在python中读取二进制文件时的偏移

来自分类Dev

在Matlab中读取HTK二进制文件

来自分类Dev

在PHP中读取二进制文件

来自分类Dev

如何在Julia中读取二进制文件?

来自分类Dev

在Clisp中以二进制模式写入/读取文件