C语言笔记-文件操作(读取和写入)

说到文件操作首先想到的就是文件的打开、关闭、读取以及写入等操作。文件可以分为文本文件和二进制文件,文本文件也称为ASCII文件,这种文件在保存时,每个字符对应一个字节,用于存放对应的ASCII码。二进制文件不是保存SASCII码,而是按二进制的编码方式保存文件内容。

C语言中操作文件是用一个指向文件的指针,这个文件指针包含着这个文件的信息,C语言中规定为FILE型,声明为:

typedef struct
            {

short level

unsigned flags

char fd

unsigned char hold;

short bsize;

unsigned char *buffer;

unsigned ar *curp;

unsigned istemp;

short token;

}

如果要定义使用可以如下使用

FILE *fp;

说完了文件指针的声明和定义,接下来就是相关的文件操作

打开文件

打开文件使用函数fopen(),调用形式如下:

FILE *fp;

fp = fopen(文件名,打开文件形式);

这两个参数文件名不用多说就是要打开文件的名称,至于第二个参数系统定义了如下几个

r以只读方式打开文件,该文件必须存在。
r+以读/写方式打开文件,该文件必须存在。
rb+以读/写方式打开一个二进制文件,只允许读/写数据。
rt+以读/写方式打开一个文本文件,允许读和写。
w打开只写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则创建该文件。
w+打开可读/写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则创建该文件。
a以附加的方式打开只写文件。若文件不存在,则会创建该文件;如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF 符保留)。
a+以附加方式打开可读/写的文件。若文件不存在,则会创建该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF符不保留)。
wb以只写方式打开或新建一个二进制文件,只允许写数据。
wb+以读/写方式打开或新建一个二进制文件,允许读和写。
wt+以读/写方式打开或新建一个文本文件,允许读和写。
at+以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+

以读/写方式打开一个二进制文件,允许读或在文件末追加数据。

如果打开失败函数将返回NULL;

代码示例如下,我新建了一个test.txt

	FILE *fp;
	   if ((fp = fopen("test.txt","r"))==NULL)
   {
   	printf("no such file\n");
   	exit(0);
   }
   fclose(fp);

是个文本文件并且我是以只读的形式打开的。

关闭文件

关闭文件函数时fclosp(文件指针),例如上面的fclose(fp)。

文件写操作

文件写操作相关的函数又fputc()、fputs()、fprintf()。前两个可以类比putc()和puts(),例如我要将一个字符写入文件中

char ch = 'F';
fputc(ch,fp);

我将一串字符写入本例中的文件

   fputs("QWERTYUIOPASDFGHJKLZXCVBNM0123456789",fp);

至于fprintf()是可以将各种各样的数据按照一定的格式输出到指定文件夹中

int i=70;
fprintf(fp,"%c",i);

将字符’A‘写入到文件夹中,打开刚刚文件可以看到已经写入进去了

文件读操作

文件读操作对应的有fgetc()、fgets()以及fsanf(),分别与写操作的三个函数相对应,fgetc()使用形式如下

   char fc =fgetc(fp);
   putchar(fc);

读取单个字符,fgets()读取字符串,如下调用:

fgets(字符数组名,n,文件指针);

其中n表示所得到字符串中字符的个数(包含“\0”)。

   char fs[20] = {0};
   fgets(fs,10,fp);

输出如下

先读取单个打印了A,之后读取了字符串FQWE。

fscanf()函数是按照格式读,形式如下:

fscanf(文件指针,格式字符串,输入列表)

还是以本例中新建的文件test.txt为例

   char j;
   int i;
   for(i=0;i<10;i++)
   {
   	fscanf(fp,"%c",&j);
   	putchar(j);
   	putchar('\n');
   }

 

输出结果如下:

这些就是c语言中的文件打开、关闭以及读写了。

 

 

 

 

 

 

 

 

 

 

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值