首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载 | ||
2012中考 | 2012高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试 MPA考试 | 中科院 |
||
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 托业 | 雅思 | 专四专八 | 口译笔译 | 博思 GRE GMAT | 新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 零起点法语 | 零起点德语 | 零起点韩语 |
||
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证 华为认证 | Java认证 |
||
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格 报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师 人力资源 | 管理咨询师 | 秘书资格 | 心理咨询师 | 出版专业资格 | 广告师职业水平 | 驾驶员 网络编辑 | 公共营养师 | 国际货运代理人 | 保险从业资格 | 电子商务师 | 普通话 | 企业培训师 营销师 |
||
卫生资格 | 执业医师 | 执业药师 | 执业护士 | ||
会计从业资格考试(会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师 注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师 |
||
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师 质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师 设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师 城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师 化工工程师 | 材料员 |
||
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏 |
文件和注册表操作
很多与文件操作相关的函数其参数类型都是const char*,本章首先介绍指向常量的指针const char*和指针常量char *const这两种类型的区别。
12.1char const * 和char * const
1 char const * p;
2 const char * p;
3 char * const p;
这三个有什么不同?const char * p;和char const * p;在实现上都是一样的,定义一个指向常量的指针,由于指针指向的是一个常量,常量的值不能改变,但是可以改变指针的指向。char * const p;这是一个指针常量,也就是指针的指向不能改变,但是可以改变指针指向的值。区别指针常量和常量指针的关键看const 和* 的位置。
12.2C语言对文件操作的支持
C语言中,对文件的操作是利用FILE结构体实现的。
12.2.1文件的打开
MSDN中有一个fopen函数
1 FILE *fopen( const char *filename, const char *mode );
其中的第一个参数是要打开的文件名称,第二个参数是打开的模式。MSDN中对打开文件的模式进行了如下的定义。
打开一个文件的实例代码如下:
FILE *pFile=fopen("1.txt","w");//该操作返回一个FILE类型的指针
12.2.2文件的写入
1 size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
文件写入有四个参数,分别表示:要写入的数据,以字节为单位的项的大小,写入项的最大数目,指向FILE类型的指针,该参数可以由fopen函数获取到,也就是fopen函数的返回值。写入文件的实例代码如下:
1 fwrite("new buffer",1,strlen("new buffer"),pFile);
由于C语言对文件操作采用缓存文件系统,从内存从磁盘写入的文件首先会被放到内存缓冲区中,只有当内存缓冲区满了或者当写入操作的文件关闭之 后,才把要写入的数据存的磁盘文件上。如果要在执行写操作之后立即将数据存放到磁盘文件上,可以先调用fflush函数刷新缓冲区或者调用fclose函数将打开的文件关闭。
12.2.3文件指针的定位
1 int fseek( FILE *stream, long offset, int origin );
该函数的第三个参数有三种默认的值,SEEK_CUR,SEEK_END,SEEK_SET,实际上是三个宏定义值,在STDIO.h文件中可以看到它们的值分别是1,2,0。分别表示定位到文件的当前位置,结束位置和开始位置。
1 fseek(pFile,0,SEEK_SET);
2 fwrite("haha",1,strlen("haha"),pFile);
将指针定位到已经打开的文件的其实位置,并写入新的数据。完成此操作时候会发现文件中起始位置的四个字符已经被替换掉了。尝试了下改变文件的打开模式,但是都不能实现a+b的效果。
12.2.3文件的读取
1 size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
由于C语言中字符串是以""0"符号结束的。在显示字符串的时候,系统会寻找""0"字符,因此在写入数据的时候需要在结尾添加一个""0",在读取数据的时候,可以动态创建一个数据长度+1的字符数组,然后将最后一个元素设置为""0"。
写入文件时
01 void CFileView::OnFileRead()
02 {
03 // TODO: Add your command handler code here
04 FILE *pFile=fopen("1.txt","w");
05 //fwrite("new buffer",1,strlen("new buffer"),pFile);
06 char buf[22]="www.colsir.com";
07 buf[21]='"0';
08 fwrite(buf,1,22,pFile);
09 fclose(pFile);
10 }
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |