我意识到我更大的文件失败了,因为它无法正确读取二进制文件中的第一个整数。这是我设置的测试文件。我知道我正在读取的 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)