文件操作

文件操作

在这里插入图片描述
r只读,为了输入数据打开一个已存在的文本文件,若文件不存在,则出错。
w只写(清空式写入)为了输入数据打开一个文本文件,若文件不存在则建立一个新文件。
在这里插入图片描述
a追加式写入,向文本文件尾添加数据,但是若文件不存在,则出错。这里向用"w"所建的文本文件(abcdef123)中追加式写入"123"。
在这里插入图片描述
rb只读,为了输入数据,打开一个二进制文本文件,若文件不存在,则程序出错

wb只写,为了输出数据,打开一个二进制文件,若文件不存在会建立一个新文件。
ab追加,向一个二进制文件尾添加数据,若文件不存在程序出错。

非格式化的输入和输出

fputs:

使用:int fputs(const char str,FILEstream),即将str像文件中写入。
fgets:

使用:char *fgets(char *str,int num,FILE *stream),即从特定的文件中读取特定的内容到str中。
从键盘中读取内容到文件中

在这里插入图片描述
fputs和printf的区别:fputs不是格式打印,printf为格式化打印
在这里插入图片描述
fgetc

使用:int fgetc(FILE *stream),从文件获得字符,EOF(-1)表示读取完毕。

读取时需要先保证文本文件中存在字符,然后再在将文本文件中的内容读取出来

在这里插入图片描述

也能用"w"和"fput"直接将键盘所输入的内容往文件中读取,利用ctrl+z+回车结束输入。
在这里插入图片描述

格式化的输入和输出
fprintf:

使用:int fprintf(FILE* stream,const char* format,…),向特定的文件格式化输出特定的内容。
下面程序是将a,b,c格式化输出到显示器上
在这里插入图片描述
下面程序是将其输到文本文件中
在这里插入图片描述
fscanf:

使用:int fscanf(FILE* stream,const char* format,…),从特定的文件中对特定的内容进行格式化输入。
以下代码是在显示器上将输入的数据进行格式化输入。
在这里插入图片描述
以下是先输入并保存文本文件中的内容,然后再在显示器上对其进行格式化输入。(文件只读,“r”)
在这里插入图片描述
ftell

返回文件指针相对于起始位置的偏移量(可以将文件看成一个线性结构,起始偏移量对应一个整数,整数指向哪就从哪开始读)
将文本文件中最开始的起始偏量为0,往后读一个加一,到4时停止。
在这里插入图片描述
fseek

根据文件指针的位置和偏移量来定文件指针(更改文件的写入位置)

从0开始设置起始偏移量,将hello改为HELLO,其它值不变SEEK_SET表示文件的开始,SEEK_END表示文件的结尾,偏移量往前偏移为负数,往后偏移为正数,所以最后将最后三个字符改为123。

在这里插入图片描述
在这里插入图片描述
最后还可以利用fseek(fp,0,SEEK_SET)将读写位置恢复到最开始,可以将字符串恢复。

应用
如何能对图片利用编程实现复制粘贴呢?图片为二进制文件,可能其内容一开始就包括了-1,可能直接结束循环退出程序,这就需要用到fread和fwrite,同时还有对fseek和ftell的应用。
fread:
使用:size_t fread(void* ptr,size_t size,size_t count,FILE* stream)
fwrite:
使用:size_t fwrite(const void* ptr,size_t size,size_t count,FILE* stream)

在这里插入图片描述
feof(判断文件结尾)
使用:int feof(FILE* stream)(判定文件结尾,需要判断文件是否结束和判断文件结束原因)
例如:
对文本文件:fgetc判断是否为EOF,fgets判断返回值是否为NULL
对二进制文件:fread判断返回值是否小于实际要读的个数
程序最后输出 read src file end,表示读到了文件结尾。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值