标准IO(常用函数的使用)

本文主要介绍了标准IO下一些常用的函数,方便以后进行查阅。如果有表述错误或者概念不清晰的地方欢迎大家提出批评和建议

目录

文件的打开与关闭

1.文件的打开

2.文件的关闭

按字符读写文件

1. int fgetc(FILE *stream);

2. int fputc(int c, FILE *stream);

3.int feof(FILE *stream);

按行读写文件

1.char *fgets(char *s, int size, FILE *stream);

2.int fputs(const char *s, FILE *stream);

按块(指定大小)读写文件

1.size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

2.size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

流的定位

1.int fseek(FILE *stream, long offset, int whence);

2.long ftell(FILE *stream);


文件的打开与关闭

1.文件的打开

 FILE *fopen(const char *pathname, const char *mode);

参数1:要打开文件的路径

参数2:打开的方式(如下)

r或rb:以只读方式打开文件,且文件必须存在

r+或r+b:以可读可写的方式打开文件,且文件必须存在

w或wb:以只写的方式打开文件,若文件不存在,则新建该文件。若文件存在,则会清空文件中的内容

w+或w+b:以可读可写的方式打开文件,若文件不存在,则新建该文件。若文件存在,则会清空文件中的内容

a或ab:以只写的方式打开文件,若文件不存在,则新建该文件。若文件存在,写入的数据会被加到文件的末尾,即文件原先的内容会被保存。

a+或a+b:以可读可写的方式打开文件,若文件不存在,则新建该文件。若文件存在,写入的数据会被加到文件的末尾,即文件原先的内容会被保存。

注:在每个选项中加入b来告诉函数库打开的文件为二进制文件,而非纯文本文件。(Linux系统会自动忽略该符号)

返回值:成功返回打开的文件流指针,失败返回NULL。

2.文件的关闭

 int fclose(FILE *stream);

参数:打开的文件流指针。

返回值:成功返回0,失败返回EOF(-1)。

按字符读写文件

1. int fgetc(FILE *stream);

功能:从指定的流中读取一个字符(节)

参数:打开的文件流指针

返回值:成功返回读取的字符(ASICII码值),失败返回EOF(-1)

2. int fputc(int c, FILE *stream);

功能:将字符(节)输出到指定的流中

参数1:要输出的字符(节)

参数2:打开的文件流指针

返回值:成功返回写入的字符(节),失败返回EOF(-1)

3.int feof(FILE *stream);

功能:判断文件是否到达文件末尾(文件和二进制文件均可判断)

参数:打开的文件流指针

返回值:为0表示没有到达文件末尾,到达文件末尾返回非0值

按行读写文件

1.char *fgets(char *s, int size, FILE *stream);

功能:从指定的流中读取一行字符

参数1:存放读到的内容的首地址

参数2:读的大小

参数3:打开的文件流指针

返回值:成功返回读到的字符串的首地址,失败或读到文件末尾返回NULL

注:fgets相较于gets来说更安全,且会将换行符也读入,所以一般推荐大家使用fgets

2.int fputs(const char *s, FILE *stream);

功能:向指定的流中输出一行字符

参数1:要输出的内容的首地址

参数2:打开的文件流指针

返回值:成功返回非负数。失败返回EOF(-1)

注:puts相较于fputs自带换行

按块(指定大小)读写文件

1.size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

功能:从指定的流中按块读取内容

参数1:存放读到的内容的首地址

参数2:一个块的大小

参数3:块的个数

参数4:打开的文件流指针

返回值:成功返回读到的块数,失败返回-1

注:假设文件有50个字节,每个块的大小为20,则返回值为2

因此传值的时候,size一般设置为1,nmemb设置为读的大小,返回值就是实际读到的字节数了

2.size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

功能:向指定的流中按块输出内容

参数1:要输出的内容的首地址

参数2:一个块的大小

参数3:块的个数

参数4:打开的文件流指针

返回值:成功返回写入的块数,失败返回-1

流的定位

1.int fseek(FILE *stream, long offset, int whence);

函数功能:对流的光标进行移动

参数1:打开的文件流指针

参数2:光标的偏移量

参数3:基准值(如下)

SEEK_SET:代表文件的起始位置

SEEK_END:代表文件的结束位置

SEEK_CUR:代表文件当前读写位置

eg:fseek(fr,0,SEEK_SET);代表跳转到文件开头

fseek(fr,-10,SEEK_CUR);代表从当前位置向前偏移10个字节

fseek(fr,0,SEEK_END);代表跳转到文件的末尾

返回值:成功返回0,失败返回-1

2.long ftell(FILE *stream);

函数功能:获得光标当前在文件的位置

参数:打开的文件流指针

返回值:成功返回光标当前的位置,失败返回-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
标准输入输出(Standard I/O)和文件输入输出(File I/O)是在计算机编程中常用的两种输入输出方式。 标准输入输出(Standard I/O)是指程序与标准输入设备(通常为键盘)和标准输出设备(通常为屏幕)之间的交互。通过标准输入设备,程序可以接收用户的输入;通过标准输出设备,程序可以将结果输出到屏幕上。标准输入输出通常使用类似于C语言中的stdio库中的函数(如printf、scanf等)进行操作。 文件输入输出(File I/O)是指程序与文件之间的交互。通过文件输入,程序可以从文件中读取数据;通过文件输出,程序可以将数据写入到文件中。文件输入输出通常使用类似于C语言中的stdio库中的函数(如fopen、fread、fwrite等)进行操作。 区别: 1. 标准I/O是与标准输入输出设备(键盘和屏幕)之间的交互,而文件I/O是与文件之间的交互。 2. 标准I/O是实时交互的,程序可以实时读取用户输入并输出结果到屏幕上;而文件I/O是对文件进行读写操作,需要先打开文件、读取或写入数据,再关闭文件。 3. 标准I/O比较简单易用,适用于与用户进行交互的场景;而文件I/O更适用于需要对文件进行读写操作的场景,可以对大量数据进行处理。 4. 标准I/O的操作相对较慢,因为需要频繁与外部设备进行交互;而文件I/O的操作相对较快,因为可以直接读写文件而无需频繁与外部设备交互。 需要注意的是,标准I/O和文件I/O并不是互斥的,它们可以同时使用。例如,在程序中可以从文件中读取数据,经过计算后再通过标准输出设备输出结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值