标准文件IO介绍

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


一切皆文件

提示:读文件就是输出。写文件就是输入

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

一、文件基础

文件的概念:一组相关数据的有序集合
文件的类型:
1.常规文件:r
2.目录文件:d
3.字符设备文件:c
4. 块设备文件: b 优盘就是块设备文件,读取优盘的时候,先是读取块设备文件,也就是读取0101二进制数据,然后再加载文件系统,将二进制数据转换成常规文件等。
5.管道文件: p
6.套接字文件: s
7.符号链接文件:l 相当于windows系统的快捷方式

二、UNIX基础知识-系统调用和库函数

举例子说明系统调用和库函数

在这里插入图片描述
系统调用:就是操作系统内核提供的函数接口。
库函数调用:就是直接调用C语言库函数,然后C语言库函数再调用系统调用。
用户利用printf调用C语言库函数,C语言库函数再调用操作系统内核提供的显卡接口来现实显示器上显示字符。
为什么会产生C语言库函数?
原因:因为操作系统五花八门,各种各样,每一种操作系统的系统调用函数都是不一样的,因此不利于开发,所以产生了C语言库函数来调用各种操作系统函数,在linux系统平台上运行用户程序,就将C库函数转化成linux系统可识别的系统调用函数,在windows上运行用户程序,就将C库函数转化成windows系统可识别的系统调用函数,提高可移植性。

三、标准I/O-介绍

1.标准I/O由ANSI C标准定义
2.主流操作系统上都实现了C库
3.标准I/O通过缓冲机制减少系统调用,实现更高的效率

标准I/O-流

FILE (是一个结构体,用这个结构体来操作文件)
标准I/O用一个结构体类型来存放打开的文件的相关信息
标准I/O的所有操作都是围绕FILE来进行
流(stream)
FILE又被称为流(stream)
文件流/二进制流

标准I/O-文本流和二进制流

注意一下区别
在这里插入图片描述

标准I/O-流的缓冲类型

缓冲区:就是操作系统给提供的内存空间
全缓冲
当流的缓冲区无数据或无空间时才执行实I/O操作(即缓冲区被写满了,才会将数据写入到硬盘或执行I/O操作)
行缓冲
当在输入和输出中遇到换行符(\n)时,进行I/O操作
当流和一个终端关联时,典型的行缓冲
无缓冲
数据直接写入文件,流不进行缓冲

标准I/O-stdin,stdout,stderr

标准/0预定义3个流,程序运行时自动打开

标准输入流0STDIN_FILENOstdin
标准输出流1STDOUT_FILENOstdout
标准错误流2STDERR_FILENOstderr

标准I/O-缓冲区实验

man 2 函数名
2-代表查询函数名在系统调用中的手册
man 3 函数名
3-代表查询函数名在库函数中的手册
缓冲区的大小为1k,也就是1024个字符
验证缓冲区大小的程序如下:

#include <stdio.h>
#include <unistd.h>
int main(int argc, char*argv[]){
	int i=0;
	for(i=0;i<10;i++){
		printf("a");
	}
	while(1){
			sleep(1); //睡眠一秒执行一次,减少cpu消耗
		}
}

for函数循环1024就不会被打印出来,循环1025次就会被输出。
此外,程序执行结束也会被输出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值