Linux操作系统——标准I/O相关函数


前言

1、标准I/O的核心对象是,通常我们使用FILE结构体来描述,该结构体有些复杂,但他主要包含有两个内容,一个是文件描述符fd,一个是缓冲区buf;
2、提到缓冲区就不得不提缓冲类型,缓冲类型分为三种:
(1)全缓冲:对于普通文件,默认使用全缓冲,只有当缓冲区满和flush函数才会对磁盘操作(在之后函数中我会解释);
(2)行缓冲:标准输入/输出流都是行缓冲,遇到’/n’才会执行I/O操作;
(3)无缓冲:暂时用不到


标准I/O相关函数

1、fopen函数:打开文件流

#include<stdio.h>
FILE *fopen(const char *path,const char *mode);//函数原型,看不懂给你举个栗子
例子:
FILE *fp;
fp=open("myfile",r);

以下所有函数头文件都是stdio.h
函数参数(后面能看懂的我就不写了):
1、path将要打开的文件的路径
2、mode文件打开方式:
(1)“r” 只读方式打开
(2)“w” 只写方式打开,如果文件不存在,会新建,存在就清空
(3)“r+” 可读可写方式打开,不清空,也不新建
(4)“w+” 可读可写方式打开,清空,新建
(5)“a+” 可读可写方式打开, 追加输入的方式,不清空,新建

2、fclose函数:关闭文件流

int fclose(FILE *stream);
例子:
fclose(fp);

3、fgetc函数:从流中读取一个字符

int fgetc(FILE *stream);
例子:
char ch=fgetc(fp);

4、fputc函数:向流中输入一个字符

int fputc(int c,FILE *stream);
例子:
char ch='a';
fputc(ch,fp);

5、fgets函数:从流中读取一个字符串

char *fgets(char *s,int size,FILE *stream);
例子:
char buf[10];
fgets(buf,sizeof(buf),fp);

6、fputs函数:向流中输入一个字符串

int *fputs(const char *s,FILE *stream);
例子:
char buf[]={"hello world!"};
fputs(buf,fp);

7、fread函数:从流中读取指定大小和数目的字符串

size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);
例子:
char buf[100]={0};
fread(buf,sizeof(char),100,fp);

函数参数:
1、ptr 缓存区的首地址,该缓存区自己创建,不是FILE结构体中的缓存区
2、size 读取每个数据的字节数
3、nmemb 读取数据的个数
4、stream FILE结构体变量指针

8、fwrite函数:向流中输入指定大小和数目的字符串

size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
例子:
char buf[100]={"hello world!"};
fwrite(buf,sizeof(char),100,fp);

9、fseek函数:改变文件读写位置

int fseek(FILE *stream,long offset,int whence);
例子:
fseek(fp,100,SEEK_SET);//将读写位置从文件头向后移100个字节

函数参数:
1、stream 见上文
2、offset 偏移量 正数表示读写位置向后移动多少字节,负数表示向前
3、whence 基准值
(1)SEEK_END 文件尾
(2)SEEK_SET 文件头
(3)SEKK_CUR 文件当前位置

10、ftell函数:读取当前读写位置

long ftell(FILE *stream)
例子:
long set=ftell(fp);//得到当前读写位置

11、fflush函数:将缓存区的数据写入文件

int fflush(FILE *stream)
例子:
fflush(fp);

12、sscanf函数:把左侧字符串的内容以format的格式传输到右侧变量中(从左到右)

int  sscanf(char *buf,const char *format,...);
例子:
#include<stdio.h>
int main()
{
	int n;
	char str[100] = "123";
	sscanf(str, "%d", &n);
	printf("%d\n", n);
	return 0;
}

结果展示:
在这里插入图片描述

13、sprintf函数:把右侧变量的内容以format的格式传输到左侧字符串中(从右到左)

int sprintf(char *buf,const char *format,...);

总结

1、标准I/O是来自于Linux操作系统中的C库,它的特点是具有缓冲区机制。
2、实际上Linux系统本身也具有对文件进行操作的函数,叫做文件I/O,它可以直接读写实际的文件,甚至还可以访问设备文件和管道文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值