文件

open:

FILE * fopen(const char * path,const char * mode);第一个参数path表示要打开的文件路径,第二个参数mode表示要以什么样的方式打开,如果打开成功则会返回一个文件指针(指向当前打开文件的缓冲区)

以下是mode的可选值:

r:只读方式打开,如果打开文件不存在,不会新建;

w:只写,如果文件不存在会新建一个文件,如果文件存在则会将文件清空再写

a:只写,​如果文件不存在会新建一个文件,如果文件存在则会在文件末尾追加。

以上几种mode所能实现的功能过于单一,所以fopen支持追加后缀的方式对fopen的功能进行扩展。比如wb表示以只读二进制的方式打开

以下是几种可选的后置

+:更新模式,可读可写

b:二进制方式打开;

x:独占方式打开 (也就是说这个文件被我打开后,​其他程序就不能对它进行操作了)

​getc()和putc()

int getc(FILE *stream):getc()的参数都为​指向文件缓冲区的指针,从指定文件缓冲区中读一个字符

int putc(char c,FILE *stream):putc的参数分别为​要写入的字符和指向写入目标文件缓冲区的指针

EOF:字符串用'\0'表示字符串结尾,文件自然也有自己的结束标志,而文件的结束标志就是EOF。 

游标​

游标是指当前在文件中什么位置​进行操作;

fseek​: 

int fseek(FILE *stream, long offset, int fromwhere);第一个参数stream表示对那个文件的游标进行操作,第二个参数long表示偏移量,第三个参数表示偏移量的参照基准;总的来说就是将stream中的游标以fromwhere为基准偏移offset个单位,成功返回0,失败返回非0值不改变游标位置。

fromwhere的可选值有:

SEEK_SET:文件开头位置

SEEK_CUR:文件当前光标位置

SEEK_END:​文件结尾位置​

ftell​:

 long ftell(FILE *stream):用于得到文件位置指针当前位置相对于文件首的偏移字节数。​

因为操作系统的不同在windows系统下ftell读换行符实际上是先读了一个'\r'再读一个'\n',在linux中则只会读一个'\n'所以就会导致以下情况:​

假设一个文本文件内容如下:​


void main()​

{

​FILE *fp=fopen(“demo.txt","r+");​

while(getc​(fp)!=EOF)​{}​

long last=ftell(fp);​​

printf("%ld",last);

}​​

则在windows环境下last值为18,在linux环境下last的值为15。​

ps:之所以这样是因为ftell是以二进制进行读取的,而在windows环境下二进制的换行符实际上是由'\r'和'\n'组成的



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值