C语言 文件操作


C语言文件操作


从操作系统的角度来看,每一个与主机相连的输出输入设备都看作是一个文件。在程序运行时,常常需要将一些数据(运行的最终结果或中间数据)输出到磁盘上存放起来,以后需要时再从磁盘中输入到计算机的内存。这就要用到磁盘文件。C语言将文件看作是一个字符(字节)的序列,即一个一个字符(字节)的数据顺序组成。根据数据的组成形式,可分为ASCII文件和二进制文件。ASCII文件又称文本(text)文件,它的每一个字节可放一个ASCII码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式按原样输出到磁盘上存放。因而一个C文件就是一个字节流或二进制流。它把数据看作是一连串的字符(字节),而不考虑记录的界限。换句话说,C语言中文件不是由记录(record)组成的(这是和PASCAL或其他高级语言不同的)。在C语言中对文件的存取是以字符(字节)为单位的。输出输入的数据流的开始和结束仅受程序控制而不受物理符号(如回车换行符)控制。也就是说,在输出时不会自动增加回车换行符作为记录结束的标志,输入时不以回车换行符作为记录的间隔(事实上C文件并不是由记录构成的)。把这种文件称为流式文件。C语言允许对文件存取一个字符,这就增加了处理的灵活性。

文件结构体
FILE*fp;

打开文件,关闭文件

fopen()FILE*fp=fopen(“XXX.txt”,“w”) ;
fclose()fclose(fp);

fopen(“路径+文件名”,“打开方式”);

  • 打开方式:
  1.   文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
    
参数意义
r(read):
w(write):
a(append):追加
b(banary):二进制文件
+:读和写

**

文件操作函数:

**

函数名意义
fgetc(FILE *stream)从流中读取字符
fputc(int c, File *fp)将字符ch写到文件
fgets(buf,n,stdin)C语言中从文件中获取字符串函数
fputs(str,fp);向指定的文件写入一个字符串
fscanf(FILEstream,constcharformat,[argument…]);格式化输入
fprintf (FILE* stream, const char*format, [argument])传送格式化输出到一个文件中
fread ( void *buffer, size_t size, size_t count, FILE *stream) ;从文件流中读数据,最多读取count个项
fwrite(const void* buffer, size_t size, size_t count, FILE* stream);向指定的文件中写入若干数据块

int feof(FILE *stream);


feof是C语言标准库函数,其原型在stdio.h中,其功能是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0
注意:feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。


int fseek(FILE *stream, long offset, int fromwhere);


重定位流(数据流/文件)上的文件内部位置指针

函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值