易截截图软件、单文件、免安装、纯绿色、仅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#,"
......

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#,"
......

使用C语言扩展Python(三)

上一篇中我们已经了解如何在Python程序和C模块之间进行值的相互传递,现在我们来进入实作阶段,看看如何将一个C语言开发的开源mp3编解码库LAME包装为一个Python下可以使用的扩展模块。首先去http://lame.sourceforge.net/download.php下载LAME的源代码,然后切换到root用户编译源代码,./configure
make
make instal ......

使用C语言扩展Python(四)

上一篇里的LAME项目已经展示了python如何与C语言交互,但程序仍不够理想,在python这一端仅仅是传递源文件和目标文件的路径,再调用C模块的encode方法来进行编码,但问题在于你无法控制encode函数,比如你想编码的源文件如果不是原始数据,而是wav文件或者其他格式呢?对于这个问题,有两种方法可以选择,一种模仿前面的C模 ......

关于简单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号