易截截图软件、单文件、免安装、纯绿色、仅160KB

文件处理函数如何使用?用法举例,C与MFC


C语言,有时候真不得不佩它,照理说,文件处理函数是没有什么好讲的,但对于很多C入门的人来说,似乎也是值得静心品味一番的。
C中的文件处理函数并不很多,而常用的,似乎更少。
函数不难,但并不代表文件处理也不难。似乎又要有点跑题了,我总是喜欢跑题。上几天做梦,梦到我掉到月球上去啦……
对文件的操作,无非就是打开、读写、调整读写偏移指针以及关闭,似乎么什可说的,也许事实也的确如此。还是让我们来看一段经典代码吧,这代码可是我自己写的。
FILE* fp = fopen(”test.txt”, “r”); assert(fp); //打开文件,给一个断言,这是一种好习惯
fseek(fp, 0, SEEK_END); //把偏移指针指向文件的结尾
unsigned int nlen = ftell(fp); //返回当前的偏移指针,也就是返回刚刚设定的文尾位置
fseek(fp, 0, SEEK_SET); //把读写偏移指针指向文件的开头
char* const _psz = (char*)malloc(nlen + 1);
//申请一段堆内存,这里的_psz为什么要被const修饰呢?
unsigned int size = fread(_psz, sizeof(char), nlen, fp); //读出文件的内容
_psz[size] = ‘\0′; //注意,必须要在字符串的结尾处添加结束标志,否则,哼哼!
fclose(fp); //关闭文件
…… //东搞搞,西搞搞
free(_psz); //归还堆内存
实在是太简单了是吧?是的,我正这样认为呢。
在读文件的时候,有点东西还是要说说的。因为我们都听说过,文件有两种格式,一种是文本,一种是二进制。文本文件,当然,我们不想说什么了,但二进制文件的读写,却值得一提。二进制的文件这样打开:
FILE* fp = fopen(”test.exe”, “rb”); assert(fp);
当然,可执行文件只不过是二进制文件的一个代表,在使用读写标志的时候,我们需要”b”后缀,表明打开的是二进制的文件。其实,这不是关键,而正真关键的部分是对文件的读写,这份代码有点冗余,但不写又怕给人闹出强迫症。
fseek(fp, 0, SEEK_END); //获取文件大小
size_t nlen = ftell(fp);
fseek(fp, 0, SEEK_SET);
unsigned char* const _psz = (unsigned char*)malloc(nlen + 1);
//显然,申请的内存应该是BYTE格式
fread(_psz, sizeof(unsigned char), nlen, fp); //由于是二进制的文件,我们不必再对内存做处理
fclose(fp);
通常,这种用法不常见,而更多的对二进制文件的读写,是出现在socket上。比如,我们要从网上更


相关文档:

C程序员的情书

#include <stdio.h>
#include <string.h>
int
main(void)
{
char str[] =
"3BVPSq4xF.K?=u#,"
"G'K<MrDnRr7gH%#,"
"XKf<f%G`w^=?C<#,"
"HgU_AnNR?*PDQU#,"
......

Linux c 数据类型

当Linux内核在体系结构差异较大的平台之间移植时,会产生与数据类型相关的问题。
.在编译内核时使用 -Wall  -W strict-prototypes 选项, 可以避免很多错误的发生
.内核使用的基本数据类型主要有:
     int           标准C语言整数类型
&n ......

C的位运算符

与 &:  任何位用&运算与0结合结果为0,与1结合结果为其本身;
或 | :  任何位用|运算与0结合结果为其本身,与1结合结果为1;
异或  ^ :  任何位用^运算与0结合结果为其本身,与1结合则取反; ......

简述C和C++程序员学习历程

哈哈!有幸在某网站发现这篇文章,读罢,觉得蛮有道理,发来大家一起共勉之    
总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。 
' J$ |0 ?! p% w" t5 D6 D: c9 |0 B
  一家之言,欢迎拍砖哈。 
  1、可以考虑先学习C. 
/ U$ X+ X/ P; Y ......

关于简单c的词法分析器

这段源码能在linux下运行!!! 能识别小数
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
/*#define  NULL          0*/
/*    自定义变量      */
#define&n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号