小编use*_*405的帖子

如何使用 fread 从二进制文件中读取整数?

我意识到我更大的文件失败了,因为它无法正确读取二进制文件中的第一个整数。这是我设置的测试文件。我知道我正在读取的 int 将始终为 1 个字节,因此我将数据读入 char,然后将其转换为 short。它在过去的某个时候开始工作,但我在清理代码时以某种方式把它搞砸了。

此时程序正在打印

“整数是 127”

什么时候应该打印

“整数是1”

有人知道为什么会这样吗?

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h> 
#include <string.h>

int main(int argc, char *argv[]){
    FILE *inp;
    char r;
    short i;

    if ((inp = fopen(argv[0],"r")) == NULL){
    printf("could not open file %s for reading\n",argv[1]);
    exit(1);}

    fread((void *)&r,(size_t) 1,(size_t) 1, inp);
    i = (short)r;

    printf("The integer is %d\n",i);        
}
Run Code Online (Sandbox Code Playgroud)

c fread

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

fread ×1