C语言 文件的读写

文件的读写

数据块IO fread与fwrite


注意:如果读到文件末尾或者读取出错时返回EOF。

EOF是一个计算机术语,为End Of File的缩写,在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。通常在文本的最后存在此字符表示资料结束。

/*读取一个文件并在屏幕上显示出来*/
char ch = fgetc(fp);
while(ch != EOF)
{
	putchar(ch);	//输出一个字符
	ch = fgetc(fp);	//继续读取一个字符
}

此外,还有feof()函数可以判断文件是否为空或者文件是否结束
feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0

#include<stdio.h>
int main(void)
{
    FILE *p;
    p = fopen("open.txt", "r");
    getc(p);
    if (feof(p))
    {
        printf("文件为空。");
    }
    else
    {
        rewind(p);//将光标跳回到文件开头
        int a;
        fscanf(p,"%d",&a);  //扫描文件流p,将内容赋值给a
        printf("%d", a);	//输出a
    }
    return 0;
 }

1.数据块I/O:fread与fwrite
函数原型:

size_t  fread(void  *buffer,size_t  size, size_t  count,FILE   *fp)
size_t  fwrite(void  *buffer,size_t  size, size_t  count,FILE   *fp)

功能:读/写数据块
返值:成功,返回读/写的块数;出错或文件尾,返回0

说明:

typedef unsigned size_t;
buffer: 指向要输入/输出数据块的首地址的指针
size: 每个要读/写的数据块的大小(字节数)
count: 要读/写的数据块的个数
fp: 要读/写的文件指针
fread与fwrite 一般用于二进制文件的输入/输出


2. fwrite写入数据

在这里插入图片描述

在内存和文本中查看结果:
在这里插入图片描述
这个函数以二进制形式对文件进行操作,不局限于文本文件
返回实际写入的数据块数目


3.fread读取数据

在这里插入图片描述

从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。
如果返回值与count不相同,则可能文件结尾或发生错误
输出结果:
在这里插入图片描述


4.格式化IO-fprintf与fscanf

1.格式化I/O:fprintf与fscanf
函数原型:

int  fprintf(FILE  *fp,const char  *format[,argument,])
int  fscanf(FILE  *fp,const char  *format[,address,])

功能:按格式对文件进行I/O操作
返值:成功,返回I/O的个数;出错或文件尾,返回EOF

其中,FILEfp为文件指针,constcharformat以什么样的格式输出,[argument]为输入列表

(1). fprintf写入数据
在这里插入图片描述

输出结果:
在这里插入图片描述

(2). fscanf读取数据
从一个流中执行格式化输入,fscanf遇到空格和换行时结束
在这里插入图片描述

输出结果:

在这里插入图片描述


文本文件的操作总结

在这里插入图片描述

按照行读写文本文件

1.字符串的读取

在这里插入图片描述然后运行,读取了所有的字符串。

2.字符串的查找

输入需要插入的函数:#inloud<string.h>
按照一行一行的方式进行检索
在这里插入图片描述

3.按行写文件

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值