2019.12.4
1.fread()
函数可以直接按照结构体的格式进行文件的读取,并根据结构体中的字节数自动匹配。
注意,若是多个结构体,且没有明显格式的情况下,注意在结构体前加上#pragma pack(1)
设定结构体对齐字符为1,即不会自动补充多余的字符。确保对齐,不然读取的时候会出错。
若#pragma pack(4)
,则会自动补齐4个字符,也是默认情况。即char
类型在读取计算大小的时候也会算成4,即使sizeof
依旧为1。
最后可以使用#pragma pack ()
取消指定对齐。也可以使用#pragma pack(pop)
。
2.fseek(fp, 0, SEEK_SET);
函数控制文件指针的位置移动。参数1: 文件指针。参数2: 指针偏移距离。参数3: 指针起始位置(文件起始位置)
3.如果你只是想将一个文件的内容读入到一个字符串中,用file_get_contents()
,它的性能比上面的代码好得多。
4.bmp文件完美解析https://blog.csdn.net/lanbing510/article/details/8176231
bmp文件分析https://blog.csdn.net/qq_37887537/article/details/88576820
5.各位数编译器的不同类型的取值范围。https://blog.csdn.net/cyj2014go/article/details/78080279
printf("char length : %d\n", sizeof(char) ); // char length : 1 printf("unsigned char length : %d\n", sizeof(unsigned char)); // unsigned char length : 1 printf("short length : %d\n", sizeof(short)); // short length : 2 printf("unsigned short length : %d\n", sizeof(unsigned short)); // unsigned short length : 2 printf("int length : %d\n", sizeof(int)); // int length : 4 printf("unsigned int length : %d\n", sizeof(unsigned int)); // unsigned int length : 4 printf("float length : %d\n", sizeof(float)); // float length : 4 printf("long length : %d\n", sizeof(long)); // long length : 4 printf("unsigned long length : %d\n", sizeof(unsigned long)); // unsigned long length : 4