c语言的文件处理

目录

1、缓冲的概念和条件。

2、文件的基本操作和文件的流程。

3、fopen函数的定义和使用。

4、fclose函数的定义和使用。

5、fgetc函数定义和使用。

6、fputc函数的定义和使用。

7、fgets函数的定义和使用。

8、fputs函数的定义和使用。

9、fread函数的定义和使用。

10、fwrite函数的定义和使用。

11、fprintf和fscanf函数的定义和使用。

12、随机读取函数的使用。

13、make的定义和使用。

14、makefile的定义和使用。


1、缓冲的概念和条件。

(1)、行缓冲:

标准的io库函数往标准输出端输出东西(例如屏幕)。所谓行缓冲就是缓冲区碰到换行符的时候才能刷新缓冲区,如果不刷新缓冲区,无法对文件执行读写操作。

(1)、刷新条件:1、遇到换行符就可以刷新。

                                2、程序正常结束。

                                3、fflush(stdout)刷新函数标准输出。

                                4、当缓冲区满之后自动刷新(默认1024个字节)。

(2)、全缓冲:

标准的io库函数往普通文件读写数据。碰到换行符不刷新,缓冲区满了才刷新。

(1)、刷新条件:1、缓冲区满了。

                               2、fflush(stdout)文件指针。

                               3、程序正常结束。

2、文件的基本操作和文件的流程。

(1)、文件的概念:

文件在c中被看成一系列连续的字节,每个字节都能被单独读取。c提供俩种文件模式:文本模式和二进制模式,与linux中的文件结构相对应。文本文件:二进制编码的字符。二进制文件:二进制值例如图片和音乐。下面以写入图片文件红色为例的代码:

(2)、文件指针和写文件的流程:

文件指针:标识一个文件,所有对文件的操作。 FILE *文件名(类似于结构体指针)。

写文件流程:应用程序->内核空间->驱动程序->硬盘。应用程序和内核空间不在同一空间,设置缓冲区的目的是为了减少进入内核的次数,提高程序的效率。

(3)、对文件的操作:

打开文件打开文件指针,对文件读写等操作,最后关闭文件,关闭之后不能进行操作。

(4)、自带文件:

c中有三个文件可以不用文件指针,直接使用。标准输入stdin 标准输出stdout 标准错误输出stderr。

3、fopen函数的定义和使用。

fopen()函数打开文件,该函数声明在stdio.h中,第一个参数是待打开的文件名,更准确的说是文件名的字符串地址,第二个参数是字符串,待打开文件的模式。

代码格式:FILE *fopen(const char *path,const char *mode)。

fopen:打开文件并返回指针,创建文件并返回指针。

path:绝对路径或者相对路径。

mode:字符串

"r"/"rb"只读方式打开文件,不创建文件。
"w"/"wb"写方式打开文件,并且清空,没有这个文件就会创建文件。
"a"/"ab"以添加方式打开文件,跳转到在末尾处,当文件不存在时相当于写操作。
"r+"/"rb+"以可读可写方式打开文件,不创建文件。
"w+"wb+"以可读可写方式打开文件,创建文件。
"a+"/"ab+"以可读写模式进入文件,并且文件存在的情况下在末尾添加文件,不存在则创建文件。

4、fclose函数的定义和使用。

关闭文件。定义:int fclose (FILE *fp)关闭fp文件,一个文件只能被关闭一次,不能多次关闭,关闭之后不能进行读写操作,成功返回0,失败返回非0。

 

5、fgetc函数定义和使用。

格式:int fgetc(FILE *stream)

从文件中一个字节并返回。

返回值:以t方式(文本文件方式)读取到文件结尾返回EOF。

              以b方式(二进制文件方式)读取到文件末尾返回feof。

6、fputc函数的定义和使用。

向文件中写入一个字符

格式:fputc('c',fp)   

7、fgets函数的定义和使用。

格式:char *fgetc(char *s,int size,FILE *stream)

从文件中读取内容,保存到s里面,size表示每次读取的最大个数,stream表示文件指针。

返回值:成功读取数据地址,失败返回NULL,如果文件读取完毕返回NULL。

注意:从文件指针中读取字符的时候,读取中碰到换行符或者文件末尾停止读取,或者读取到

size-1个字节的时候停止读取,读取的最后一个内容加上\0。

8、fputs函数的定义和使用。

格式:int fputs(const char *s,FILE *stream)将s中的字符串写入到stream所代表的文件指针文件。

返回值:成功返回字节数,失败返回-1。

9、fread函数的定义和使用。

格式:size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)

从stream中读取的有nmemb块文件,每个块是size个字节,保存在ptr中。 

返回值:块数,例如读取到下图代码就是4块。 

10、fwrite函数的定义和使用。

写文件。格式:size_t fwrite (void *ptr,size_t size,size_t nmemb,FILE *stream)

将ptr中的数据写入stream文件中,块数是nmemb块,一个块有size个字节。

一般进入写文件会在文件末尾处,加上rewind(文件指针)设置偏移量到文件的首部。

 

11、fprintf和fscanf函数的定义和使用。

fprintf函数:函数将数据输出到文件指针所指定的文件。

fscanf函数:从文件指针所标识的文件中获取输入。

12、随机读取函数的使用。

rewind 函数:复位 。rewind(文件指针)

fseek函数:定位任意位置。int fseek(FILE *stream,long offset,int whence)

                                                                  文件指针      位移量         起始点

ftell函数:测文件读写位置距文件多少字节。int length = ftell(fp)

whence
起始位置
文件开头SEEK_SET
文件当前位置SEEK_CUR
文件末尾SEEK_END

位移量以起始点为基点,正向移动到末尾是正数,向开头移动是负数。

13、make的定义和使用。

1、make的定义

(1)、make是个命令用来解析makefile文件,一般存放在/usr/bin。

(2)、make解决的主要问题简化编译程序时候的命令,提高效率。

(3)、在大型项目中,使用make可以判断那些文件进行修改了,只会重新编译修改的文件。

2、make的用法

(1)、make 使用自带的makefile文件,一般默认在当前文件下寻找GUNmakefile,makefile,Makefile文件作为输入文件。

(2)、自定义的makefile文件一般 make -f 文件名。

14、makefile的定义和使用。

1、makefile的定义

语法规则: 目标  依赖文件列表

                   <Tab> 命令列表

(1)、目标:要产生的文件名,目标可以是可执行文件或者其他obj文件,也可以是动作的名称。

(2)、依赖文件:用来输入从而产生目标文件(可以有多个或者没有)。

(3)、命令:make执行的动作,可以多个或者没有,又多个的情况,一行只写一个动作。

2、makefile的使用

(1)、main代表目标文件,main.o sub.o sum.o代表依赖文件。下面的是命令列表。

(2)、main.0代表目标文件,main.c代表依赖文件。下面是命令列表。

(3)、clean代表目标文件,下面是命令列表。

一般makefile执行从第二个main.o开始执行,将这些.c文件编译成.o文件,然后执行第一步编译成main可执行文件。使用make clean会执行删除所有的.o文件,main文件,a.out文件。

3、交叉编译时makefile的使用

可以将前面的五行看作为宏定义的作用。分别替代掉之前的写法。

其中💲 符号相当于是自定义的类型例如gcc在开头重命名之后,下面格式应该是💲(cc)。

这样做的目的在交叉编译的时候可移植性更高,一般一直到芯片上的时候都是在linux中生成可执行文件再移植。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值