问题:
最近一个任务读取一个"*.dll"文件里面的字符个数,开始的时候用C语言打开文件,读取一半,就停止了,开始的时候怎么也不明白是怎么一回事,还以为是不懂得dll文件的格式的原因,就去查了查"PE"文件格式,后来碰巧解决了这个问题。才知道自己的知识太不系统,太浅薄了,本质上是因为我以"文本的形式"打开的文件,所以总是遇到提前遇到“结束符”,哎。
解答:
查找C语言的课本我才知道,从数据的组织来看,文件在C语言只分为两类:ASCII文件(即文本文件)和二进制文件,也就是说什么"*.dll","*.exe","*.3ds",全部是能以2进制形式打开,只是具体的读法不同而已,这么原始的道理我都没明白,想想真是惭愧,我还去找dll文件的格式,浅薄和愚蠢。不过问题终于解决了,我也懂得了一点知识。有机会真的应该好好学习C语言,大学的本科没学过这门课,(我们直接讲的C++),真是遗憾。其实通过读取3ds,ms3d等文件格式,发现C语言的文件操作还是应用的非常广泛和使用的也正好总结一下。
首先是文件操作的头文件包含在#include<stdio.h>这个里面,FILE是系统预先定义的文件结构体,其相应的包含的内容就不一一说明了。
打开文件函数和常用的打开方式:
1) FILE *fp; fp=fopen("文件的名称","文件打开方式")
2)文件打开方式