时间:2021-05-19
关于C语言的文件操作之前我也写过一篇教程来介绍,但是当时写的很不全面,只是简单的使用了一下 ,今天再从新学习一下。
首先还是先看一个简单的例子:
include<stdio.h>int main(){ FILE *fp; //声明一个文件指针,指向文件缓冲区的首地址 char ch; if( (fp = fopen("file_1.txt","a")) == NULL ) //w+打开可读写文件,若文件存在则清零,不存在则新建文件,a 模式不清零 { printf("Cannot open file, press any key to exit!"); //文件无法打开 } printf("Input a string:\n"); while ((ch = getchar()) != '\n' ) { putc(ch,fp); //该函数将字符写入文件,与 fputc 的区别? } fclose(fp); return 0;}这个例子就是实现打开或新建一个文本文件,然后写入用户在控制台输入的数据。
关于文件操作首先是:
FILE *fp;
这个FILE是文件类型标识符,是C编译系统定义好的一个结构体类型,结构体中含有文件名、文件状态等信息。
其定义一个指针变量fp,该变量用于指向一个文件,存放的是文件缓冲区的首地址。该指针又叫文件指针,
文件指针是一个指向文件开头的指针。使用文件指针,我们可以打开或者关闭一个文件,同时,我们也可以使用文件指针将数据的读写位置移动到文件的任意字节位置。
然后使用fopen函数打开或新建一个文件:
fopen() 函数用来打开一个文件,该函数接受两个字符串类型的参数:文件名(filename)、打开模式(open mode)
fopen("filename","open mode")
当使用该函数打开一个文件时,返回一个指针,该指针指向文件的开始位置,称为文件指针,那么为了接收它返回的文件指针,我们需要事先声明一个文件指针: FILE *fp
如果因为某些系统内部原因导致文件无法打开,则函数返回空指针 NULL
所以为了避免文件打开失败导致的程序异常,打开文件一般按照如下格式:
if( (fp = fopen("file_1.txt","a")) == NULL ) //w+打开可读写文件,若文件存在则清零,不存在则新建文件,a 模式不清零 { printf("Cannot open file, press any key to exit!"); //文件无法打开 }关于文件打开的模式,我在上一篇文件操作的博客中详细介绍了,链接:
在下面就是获取用户输入,使用一个while循环持续的获取输入,
while ((ch = getchar()) != '\n' ) { putc(ch,fp); }再此使用 \n 作为结束标志,即只能在控制台输入一行字符串,若使用EOF,则可以多行输入,用 ctrl+z 表示输入结束,该组合键代表标准输入文件的结束。
下一句 putc(ch,fp); 就是吧用户输入的字符写入文件,注意这里是一个字符一个字符写入的,因为输入用的是getchar函数,如果是字符串输入写入的话,可以使用 fputc()函数直接写入一个字符串。
最后也是非常重要的一部,对文件读写完毕后需要关闭文件,防止文件打开过多造成的文件读写混乱。
使用 fclose()函数关闭一个文件,
关闭文件,正常关闭时返回0,否则返回1
关闭时,系统会清除缓冲区,并把数据输出到磁盘文件,释放缓冲单元,使文件指针与具体文件脱钩。
fclose(fp);
2、文件的读
到这里关于文件的写操作就基本上是这些,下面是关于文件的读操作,其实和写差不多。
还是先看一下完整的代码,方便和上面的写操作对比:
#include <stdio.h>#include <stdlib.h>int main(){ FILE *fp; char ch; char str[80]; char file_name[15]; //输入文件名称缓冲 //如果文件和本程序在同一个文件下面,则直接输入txt文件名即可 //如果不在同一目录下面,则需要输入完整文件路径格式 //如 : e:\\test.txt printf("please enter the filename: "); //注意输入文件名时需要带上文件的后缀.txt gets(file_name); //gets函数用来读取用户输入的字符串,专门针对字符串处理设计的 if((fp = fopen(file_name,"r")) == NULL ) //r模式不能写入数据,只能读取 { printf("Cannot open file, press any key to exit!\n"); //文件无法打开 exit(0); } while((fgets(str,80,fp)) != NULL) puts(str); fclose(fp);}开始的打开文件方式和写操作的差不多,就是多了一个用户自己输入文件的路径和名称。
然后程序用了两种方式来读取文件内容,一个是使用fgetc函数读取单个字符,然后输出,一直循环,直到读取到文件的末尾。
另一种方式是使用特殊的 fgets() 函数来一次性读取80个字节的内容:
fgets 函数从 fp 文件中读取 80 个字节的数据到str数组中,然后用 puts 函数输出。
当到达文件末尾时, 函数返回 NULL,若要持续读出字符串,则循环检测每次读出80个字节后是否到达文件末尾。
以上所述是小编给大家介绍的关于C语言文件操作方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文具体给出了C#常用的文件操作方法,包括C#追加文件,C#拷贝文件,C#删除文件,C#移动文件,C#创建目录。(1)C#追加文件StreamWritersw=
本文实例讲述了C#封装的常用文件操作类。分享给大家供大家参考。具体如下:这个C#类封装了我们经常能用到的文件操作方法,包括读写文件、获取文件扩展名、复制文件、追
本文以实例讲述了CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能,对于网站开发来说非常实用。具体操作方法如下:语言包文件如下:a
本文实例讲述了C#使用oledb操作excel文件的方法。分享给大家供大家参考。具体分析如下:不管什么编程语言都会提供操作Excel文件的方式,C#操作Exce
利用c语言删除目录下文件最近这段时间工作内容是关于Linux下的简单文件操作,以前对于Linux系统下的文件操作函数都不是太熟悉,经过这次实践,对这些函数使用有