C文件操作就这么简单
c文件操作就这么简单
文件操作,稍微一总结.。
FILE是一个结构体类型,在TC和VS中定义不相同,他的作用就是在fopen()之后保存了打开文件的信息。也就是说操作系统帮我们完成了,我们不用管,大大降低了难度吧。
首先我们考虑下对文件的操作,文件类型分为文本和二进制。读写文件的函数一般前面有个f,也就表示file,open,fopen,read,fread,很容易记住。
打开文件后要读写,当前其中关于判断打开是否成功,读写是否成功。。。。我就省略了。打开时设置打开后的操作模式,这个模式直接保存在了FILE结构体的flag中。打开就一个fopen,然后我们先考虑读吧,读写的函数都比较多:
fgetc(),fgetchar(),getc();fgets(),gets(),fread(),fscanf();
前三个是读取单个字符,后三个是读取字符串,一般都是结合while判断是否到了EOF来处理。fscanf()和fprintf()较为复杂,也容易搞混淆,可以这么理解,
fscanf(fp,"%s",name); //从fp指定的文件中以字符串保存在name变量中
fprintf(fp,"%s",name); //将name以字符串的形式保存到fp指定的文件中
fread(a,b,c,d)函数功能强大,可以这么理解,从d中读取c个b长度的数据保存到a中。如:fread(buf, strlen(msg)+1, 1,fp);
fwrite(a,b,c,d)函数功能强大,可以这么理解,从a中读取c个b长度的数据保存到d中。只是a和d位置变换了。如:fwrite(buf, strlen(msg)+1, 1,fp);
有了以上的函数你可以简单的读一个文件了,但是如果想读某个位置,怎么办?读写文件都是通过一个指针来实现的FILE *fp;在fp中保存了一个指向的当前位置的指针,我们要得到这个位置,就用ftell()函数。得到其与文件头的偏移量。如:1,21,23,14,45,63;fp在fopen时指向了1,然后fgetc()呀什么的,就读出了23,当然你通过ftell()就可以知道目前的位置在第三个。如果我们要取离开始位置第4个的数据呢?你可以使用rewind(fp);复位到文件头,在ftell()==4,然后开始读取。当然还有一个更好用的函数fseek(FILE指针,偏移字节数,起始位置);这个函数就相当灵活了,起始位置可以有三个选项:文件开头(SEEK_SET),相当于rewind()了一下;当前位置(SEEK_CUR);文件结尾(SEEK_END)。
综合以上你是不是可以灵活的读一个文件了,对于写的函数:
fputc(),fputchar(),putc();fputs(),puts(),fwrite(),fprintf();和读都是一一对应的,关于他们怎么使用,可以通过看其参数都能明白。
OK,到此读写是不是就这么回事呢,还有一小小点,gets,fgets....
相关文档:
C/C++中Static的作用详述
1.先来介绍它的第一条也是最重要的一条:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c.
下面是a.c的内容:
char a = 'A'; // global variable
void ......
Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意。作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助。
1:使用vc开发项目时,常会遇到这种情况:
即明明只改动了一个文件,却要把整个项目全部重新编译连接一次。刚刚连接好,一运行,又提示 ......
网马加密中,目前有个function(p,a,c,k,e,d)的,非常讨厌,我也是深恶痛绝,记得我刚开始碰到它的时候,拼命地读函数,那个叫痛苦啊,磕磕绊绊地勉强搞了出来。今天,突然看见了function(p,a,c,k,e,d)的解密代码,高兴都来不及
<script>
a=62;
function encode() {
var code = document.getElementById('code' ......
深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的。大致有以下8 类: 8051存储类型及存储区域l; 存储模式l存储器类型声明l变量类型声明l 位变量与位寻址l 特殊功能寄存器(SFR)l C51指针l 函数属性具体说明如下(8031为缺省CPU)。
第一节 Keil C ......