linux——05标准io

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、linux7种文件

IO:
	Inout
	Output
	7种文件类型
	b 块设备文件		文件io
	c 字符设备文件		文件io
	l 链接文件			链接io
	- 普通文件			标准io/文件io
	s 套接字文件         文件io
	p 管道文件			文件io
	d 目录文件			目录io
	文件io
		没有缓存的io
	标准io
		有缓存的io

二、普通文件

1.定义与类比

	普通文件大概有两类,
	一类:ascii码文件   文本文件/程序/代码
	一类:二进制文件    音频/视频/压缩包
	2021
	acsii码文件;'2''0''2''1'
				00110010 00110000 00110010 00110001
	二进制文件:
				00000000 00000000 00000111 11100101

2.标准io

	stdio.h
	1.操作文件步骤
		1.打开文件 fopen
		2.读写文件 fgetc/fputc
				   fgets/fputs
				   fread/fwrite
				   fscanf/fprintf
		3.关闭文件 fclose
		有空间释放的意思,只能关闭一次。
		关闭多次,越界
		不关闭,内存泄漏
	2.流:
		1.方向性
		2.顺序性
	3.函数接口
		1.fopen
		 FILE *fopen(const char *path, const char *mode);
		 功能:打开一个文件并建立一个流
		 参数:
		 		path:文件名或者路径
		 		r		只读
		 				文件不存在,报错 文件存在,只读
		 		r+		读写
		 		w		只写
		 				文件不存在,创建 文件存在,清空
		 		w+		写读
		 		a		追加只写
		 				文件不存在,创建 文件存在,追加只写打开
		 		a+		追加读写
		 返回值:
		 		成功返回文件流指针
		 		失败返回空指针
		 	2.setvbuf
		 	int setvbuf(FILE *stream, char *buf, int mode, size_t size);
		 	功能:改变流的缓存类型
		 	参数:
		 		stream:文件流指针
		 		buf:缓存区空间首地址
		 		mode:缓存类型
		 			_IONBF 不缓存
		 			_IOFBF 全缓存
		 			_IOLBF 行缓存
		 		size 缓存区大小
		 	返回值:
		 		成功返回0,失败返回
		 

3.缓存类型

	1.全缓存:
		4k
		刷新条件;
		1.缓存区满
		2.程序结束
		3.fflush刷新
		和文件建立的缓存
	2.行缓存:
		1k
		刷新条件:
		1.缓存区满
		2.程序结束
		3.fflush刷新
		4./n
		和终端建立的缓存
	3.不缓存
		人机交互
		界面控制
		出错处理

4.特殊流

	在程序开始运行时操作系统会打开三个文件流
	1.标准输入流
			stdin	
	2.标准输出流
			stdout
	3.标准出错流
			stderr

在这里插入图片描述

5.标准io——全缓存文件按操作

	1.fputc/fgetc
	  int fputc(int c, FILE *stream);
	  功能:
	  	向流中写入字符
	  参数::
	  	c:要写入字符的值
	  	strea:文件流指针
	  返回值:
	  	成功返回写入字符的ascii值
		失败返回EOF
	int fgetc(FILE *stream);
		功能:
	  		从流中读取字符
	 	 参数::
	  		strea:文件流指针
	 	 返回值:
	 	 	成功返回读到字符的ascii值
			失败读到文件末尾返回EOF
	2.fgets/fputs
	int fputs(const char *s, FILE *stream);
	功能:
		将s指向的字符串写入stream中
	参数:
		s字符串的首地址
		stream:文件流指针
	返回值:
		成功返回非负数
		失败返回EOF
	char *fgets(char *s, int size, FILE *stream);
	功能:
		从流中读取一个字符串
	参数:
		s字符串的首地址
		size:最多存放字符串的个数
		stream:文件流指针
	返回值:
		成功返回字符串首地址
		失败或者读到文件末尾返回NULL
	注意:
		1.fgets遇到\n直接结束,不会向后读取
		2.最多读取size-1个字符,必须留一个文职放\0字符
		3.fgets遇到\n不会去掉,会将其放入存储空间中,并在\n后面加\0
	gets与fgets区别
		1.fgets限定了接收字符串的个数,更加安全
		2.fgets不会去掉从终端接收到的\n
		3.gets可能会发生越界,是危险的
		4.gets会去掉从终端接收到的\n
	puts与fputs区别
	puts会多打印一个\n
	fputs不会多打印\n	
	3.fscanf/fpirntf
	int fprintf(FILE *stream, const char *format, ...);
	功能:
		将格式化字符串打印到stream中
	参数:
		format:格式化字符串首地址
		stream:文件流指针
	返回值:
		成功返回字符串首地址
		失败或者读到文件末尾返回NULL
	printf == fprintf(stdout ,...)
	int fscanf(FILE *stream, const char *format, ...);
	功能:
		将格式化字符串打印到stream中
	参数:
		format:格式化字符串首地址
		stream:文件流指针
	返回值:
		成功返回字符串首地址
		失败或者读到文件末尾返回NULL
	printf == fprintf(stdout ,...) 
	功能:
		从流中接收格式化字符串
	参数:
		format:格式化字符串首地址
		stream:文件流指针
	返回值:
		成功返回匹配到的输入控制符的个数
		失败返回EOF
	printf == fprintf(stdout ,...)
	fscanf(stdin,...) == scanf()
	4.fwrite/fread
	size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
	功能:
		向流中写入nmemb个对象,每个对象size个字节,再ptr指向的空间中存放
	参数:
		ptr:存放数据空间的首地址
		size:对象大小
		nmemb:对象个数
		stream:文件流指针
	返回值:
		成功返回实际写入对象的个数
		失败返回0
	size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
	功能:
		从流中读nmemb个对象,每个对象size个字节,再ptr指向的空间中存放
	参数:
		ptr:存放数据空间的首地址
		size:对象大小
		nmemb:对象个数
		stream:文件流指针
	返回值:
		成功返回实际写入对象的个数
		失败返回0
		读到文件末尾返回0
	

6.文件流偏移

	1.fseek
	int fseek(FILE *stream, long offset, int whence);
	功能;
		定位流的偏移量
	参数:
		stream文件流指针
		offset偏移量可以正可以负
		whence SEEK_SET, SEEK_CUR, or SEEK_END 分别是开头 当前末尾
	返回值:
		成功返回0
		失败返回-1
	2.ftell
	long ftell(FILE *stream);
	功能:获取流指针的偏移量
	3.rewind
	功能将文件流指针定位到开头

5.main函数


int main(int argc, const char *argv[])
参数:
	argc 在命令行输入参数的个数
	char *argv[] 指针数组 每一个指针指向命令行输入的字符串

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值