头件 : #include<stdio.h>
两个必须函数:
FILE * fopen(const char * path,const char * mode); //path:文件路径 mode: {r,w,a,b+}组合, 具体功能另记
int fclose(FILE * stream);
size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream); //从文件流读取数据
size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream); //将数据写至文件流
其实fread, 和fwrite都会修改文件流的当前位置的, 但如果重新就用到下面的函数
//移动文件流的读写位置 whence={SEEK_SET(从头算offset), SEEK_CUR(从当前算offset) , SEEK_END(从尾算offset)}
int fseek(FILE * stream,long offset,int whence);
void rewind(FILE * stream); //重设文件流的读写位置为文件开头
暂时只记录要用到的!!
例程:
#include <math.h> #include <stdio.h> #include <WINDOWS.H> #include <IOSTREAM> using namespace std; int main(int argc, char* argv[]) { FILE* file = fopen("1.bmp", "rb"); BITMAPFILEHEADER fheader = {0}; fread((void*)&fheader, sizeof(BITMAPFILEHEADER), 1, file); cout << ftell(file) << endl; BITMAPINFOHEADER info_header = {0}; fread((void*)&info_header, sizeof(BITMAPINFOHEADER), 1, file); cout << ftell(file) << endl; int num = pow(2, info_header.biBitCount); RGBQUAD* rgbs = new RGBQUAD[num]; fread((void*)rgbs, sizeof(RGBQUAD), 16, file); cout << ftell(file) << endl; fclose(file); return 0; }
例程是一个读取位图文件头信息的Demo!!