《VC++深入详解》学习笔记---12章文件和注册表操作(1)

23 篇文章 0 订阅

一、const char*和char* const

const char*类型是指向常量的指针(const在*前面),不能修改其指向的内存中的内容,但可以修改其所指向的内存地址。

使用: char ch[5] = "lisi";

const char* pStr = ch;

*pStr = 'w';                                               //ERROR

pStr = "wangwu";                                    //OK

char* const类型是定义的是一个指针常量。

使用: char ch[5] = "lisi";

const char* pStr = ch;

*pStr = 'W';                                               //OK

pStr = "zhangsan";                                   //ERROR


二、C语言对文件的操作

· 1.在C语言中,对于文件操作时要先用fopen函数返回一个FILE类型的指针。

FILE *fopen( const char *filename, const char *mode);

其中,第一个参数filename是一个指向文件名的常量指针,表示将要打开的文件,也可以写路径;第二个参数mode用于指定

文件的打开方式,有“r”,“w”,“a”,“r+”,“w+”,“a+”.


2.C语言中文件的写入通过fwrite实现:

size_t fwrite(const void *buffer, size_t size, size_t count,FILE *stream);

第一个参数buffer指向要被写入文件的数据;第二个参数size是以字节为单位的项的大小,可以理解为unsigned integer类型;

第三个参数count是将要被写入的项的最大数;第四个参数stream是一个指向FILE类型的指针。

3.C语言中对文件操作结束后要使用fclose函数关闭文件来表示操作已完成:

int fclose( FILE *file );


4.如果需要对文件进行多次操作,还想要让每次操作的结果立即显现出来,可以使用fflush函数,这个函数的作用是将缓冲区

中的数据立即写入磁盘文件中。

int fflush(FILE *stream);


5.在多次使用fwrite对文件进行操作时,每一次的新操作会在上一次操作结束的位置继续进行,可以使用fseek函数来把文件指

针移到指定的位置。

int fseek( FILE *stream, long offset, int origin );

第一个参数stream是指向FILE 结构体的指针;第二个参数offset是偏移量;第三个参数指定文件指针的起始位置,包括

SEEK_CUR(当前位置)、SEEK_END(文件的结尾处)、SEEK_SET(文件的开始处)。


6.文件的读取需要调用fread函数

size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

参数含义与fwrite函数一样。

7.内存初始化函数memset:作用是将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第一个值为

指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针

void *memset(void *s, int ch, size_t n);


8.将指针放置到文件开始处函数:rewind

 void rewind(FILE *file);


实例一:

FILE *pFile=fopen("1.txt","w");
fwrite("http://my.csdn.net/",1,strlen("http://my.csdn.net/"),pFile);
fseek(pFile,0,SEEK_SET);
write("ftp:",1,strlen("ftp:"),pFile);
fwrite("http://my.csdn.net/",1,strlen("http://my.csdn.net/"),pFile);
fclose(pFile);
//fflush(pFile);


9.一些需要注意的情况:

a. 在向文件中写入字符串时,一定要在文件末尾添加“\0”

实例:

FILE *pFile=fopen("1.txt","w");

char buf[20]="http://my.csdn.net/";

buf[19]='\0';

fwrite(buf, 1, 22, pFile);

fclose(pFile);

b.注意二进制与十进制的转换

实例(错误):

FILE *pFile=fopen("3.txt","w");
int i=98341;
fwrite(&i,4,1,pFile);
fclose(pFile);

这样生成3.txt文件用记事本打开后会乱码,因为写进去的是二进制的98341

实例(正确):

FILE *pFile=fopen("3.txt","w");
//int i=98341;
char ch[5];
ch[0]=9+48;
ch[1]=8+48;
ch[2]=3+48;
ch[3]=4+48;
ch[4]=1+48;
//itoa(i,ch,10);
//fwrite(&i,4,1,pFile);
fwrite(ch,1,5,pFile);
fclose(pFile);


三、C++对文件的操作

1.C++中向文件写入数据可以用ofstream类来实现

ofstream( const char* szName,

int nMode = ios::out,

int nPot = filebuf::openprot);

第一个参数指定将要打开的文件名;第二个参数指定文件打开的模式;第三个参数指定文件保护规格。

实例:

ofstream ofs("3.txt");
ofs.write("http://my.csdn.net/",strlen("http://my.csdn.net/"));
ofs.close();


2.C++读取文件可以通过ifstream类,其构造方法与ofstream类相同;

实例:

ifstream ifs("3.txt");

char ch[100];

memset(ch, 0, 100);

ifs.read(ch,100);

ifs.close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值