第12章 文件和注册表操作
1.const char*和char* const
指向常量的指针const char*:也可将const放到char后面,但是要在*号前面,即也可以写为:char const*;该类型定义的常量指针不能修改其指向的内存中的内容,但可以修改其所指向的内存地址。
指针常量char* const:必须在其定义的同时赋值。指针常量表示指针本身是常量。
2.C语言对文件操作的支持(头文件:stdio.h)
①文件的打开:FILE *fopen( const char *filename, const char *mode );
②文件的写入:size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
C语言对文件的操作使用了缓冲文件系统。
③文件的关闭:int fclose( FILE *stream );
④在不关闭文件的情况下将缓冲区数据写入磁盘文件:int fflush( FILE *stream );
⑤文件指针定位:int fseek( FILE *stream, long offset, int origin );
⑥文件的读取:size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
应该在读取到的数据之后添加’\0’字符,以便作为字符串的结尾,有以下方法:
1)在写入数据时多写入一个内容为’\0’的字节;
2)在定义字符数组之后,利用C语言的memset函数将这个字符数组中所有数据都设置为0:
char ch[100];
memset(ch,0,100);
fread(ch,1,100,pFile);
3)对于事先不知道将要读取的文件大小的情况,可以利用C语言的ftell及fseek函数来得到文件的长度。ftell函数返回文件指针当前的位置,因此可以先利用fseek函数将文件指针移动到文件的结尾处,然后利用ftell函数就可以得到文件指针的当前位置,也就是文件的长度。再根据此长度构造数组,并采取置0操作:
FILE *pFile=fopen(“1.txt”,”r”);
char *pBuf;
fseek(pFile,0,SEEK_END);
int len=ftell(pFile);
pBuf=new char[len+1];
rewind(pFile); //将文件指针移动到文件开始处
fread(pBuf,1,len,pFile);
pBuf[len]=0;
fclose(pFile);
3.C++对文件操作的支持(头文件:fstream.h)
①ofstream类用来向文件中写入数据;
②ifstream类用来读取文件;
4.Win32 API对文件操作的支持:CreateFile、ReadFile、WriteFile;
5.MFC对文件操作的支持:
MFC提供的支持文件操作的基类是CFile,该类提供了没有缓存的二进制格式的磁盘文件输入输出功能;
CFileDialog类用来实现一个具有“打开文件”或者“另存为”对话框的功能。