C中的文件操作函数[笔记]

头件 : #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!!

 

posted @ 2015-08-07 00:25  dilex  阅读(307)  评论(0编辑  收藏  举报