C文件操作就这么简单

来源:互联网 发布:笔记本散热器 知乎 编辑:程序博客网 时间:2024/05/24 06:34

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....以s结尾表示字符串,它告诉我们判断结尾要用'/0'。
最后,一个fopen()对应一个fclose()。

原创粉丝点击