【C\C++语言入门篇】 文件操作
最近实在是太忙了,这篇整整就推迟了1个月了,实在是对不起。之前本打算这个模块就结束了,文件操作就不写了,但是文件操作又是一个很重要的东西,而且也刚好能够总结之前我们学习的所有知识。同时也为了将文件操作这个初学者认为很神秘的东西给本质化。因此,本篇将逐一介绍C语言的文件操作。(本模块的命名本来是想C\C++一块儿讲解的,但是由于工作、毕业论文、业余时间的充电、还有要完成那个未知的梦等,因此因为时间问题C++就只能放在以后有机会再写了,因此本篇将是本模块的最后一篇,之后将不会再连载了,请大家谅解。)
好了,回到正题,先来看文件操作中的文件。所谓文件(file)一般指存储在外部介质上数据的集合,比如我们经常使用的mp3、mp4、txt、bmp、jpg、exe、rmvb等等。这些文件各有各的用途,我们通常将它们存放在磁盘或者可移动盘等介质中。那么,为什么这里面又有这么多种格式的文件呢?原因很简单,它们各有各的用途,区分就在于这些文件里面存放的数据集合所遵循的存储规则不一样。举个例子比如bmp图片文件,为什么他能够表示一张图片,因为它有固定的格式,哪一段到哪一段,哪个偏移到哪个偏移应该存放什么数据是规定好了的。比如有文件头,一般是一个结构体,存放的文件的一些信息,如图片的大小,像素等等。再后来有数据区。然后我们要显示一张图片,就只需要按照前面所说的规则将文件头结构和数据块读出来,然后将这些数据在屏幕上用颜色表示出来,就成了一张图片。其它文件格式也类似。
这里要说一个更重要的例子,对我们理解文件有好处。那么这个文件就是exe文件(这里只讨论windows平台),通常我们认为它是一个可执行程序,这无疑是增加了它的神秘度。从本质上来讲exe无非是一种固定的文件格式罢了。既然这样,它就有一套自己的存储规则。跟前面的图片文件一样有规则。此时,你可能会问:你这么说那我就可以纯手工(直接填写数据填充文件)写出一个exe可执行文件了? 面对你这个问题,我只能说你已经习惯思考了,已经习惯给自己提问了,已经很聪明了。那么答案是肯定的,你完全可以用一个编辑器直接填写数据写出一个helloworld.exe文件或者helloworld.dll文件。因为这些具有一定格式规则的文件一般是二进制存储的,于是我们可以用一个二进制编辑器新建一个二进制文件,然后向里面填写数据。然后双击运行输出“helloworld”字符串。你可能会觉得很有成就感,我之前就写过一个exe和dll。这里exe和dll的文件格
相关文档:
什么是空指针常量(null pointer constant)?
[6.3.2.3-3] An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.
这里告诉我们:0、0L、'\0'、3 - 3、0 * 17 (它们都是“integer constant expression”)以及 (void*)0 等都是空 ......
C语言的回调函数思想代码:
#include <stdio.h>
void *max(void *base, unsigned int nmemb, unsigned int size,
int (*compar)(const void *, const void *))
{
int i;
void* max_data = base;
char* tmp = base;
&nbs ......
如果要加入此计划:
1、
方式1
:加入
QQ
群:
93684322
。
2、
方式2
:加入
CSDN
群组:
DS计划
。
1.1 变量存储域
1.1.1 一个示例
pang123hui首先提供了一个网上流传的学习代码示例:
int a = 0; //全局区
void main()
{
int b; //栈
char s[] = “abc” ......
C/C++底层实现指定磁盘只读 收藏
燕狂徒写的驱动挂钩,限制磁盘只读, 用于保证涉密计算机的稳定,相当于将磁盘变成ROM #include "ntddk.h"
#include
#include #define DRIVERNAME "OnlyRead(GongXiPeng!)" // for use in messages typedef struct tagDEVICE_EXTEN ......