How do I read an integer from a binary file using fread?
我意识到更大的文件失败了,因为它无法正确读取二进制文件中的第一个整数。 这是我为此设置的测试文件。 我知道我正在读取的int始终为1个字节,因此我将数据读取为char型,然后将其转换为short型。 它在过去的某个时候可以正常工作,但是在清理代码时我以某种方式弄乱了它。
此时程序正在打印
"整数是127"
什么时候应该打印
"整数是1"
有人知道为什么会这样吗?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #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 ",argv[1]); exit(1);} fread((void *)&r,(size_t) 1,(size_t) 1, inp); i = (short)r; printf("The integer is %d ",i); } |
您应该像这样调用
1 2 |
另外,最好检查返回值,如果成功,返回值应为1:
编辑
如果要读取的值只有8位,则应使用
1 2 |
您
您打算使用以下机会:
1 2 3 4 |
另外,在行尾的