Linux之 IO编程 一

文件操作 同时被 2 个专栏收录
4 篇文章 0 订阅
10 篇文章 0 订阅

1.什么是IO?

I: input     输入
o: output    输出
I/O操作其实就是对文件的读写

2.I/O分类

(1)标准IO
	POSIX 标准:规定 函数功能,返回值,函数的参数
	POSIX 标准  统一了函数的接口
	本质:  是对系统调用的再次封装
	作用: 
	1. 增强了代码的可移植性,复用性
	2. 提高了效率。
		标准IO增加了一个【相当重要:缓冲机制】
	标准IO		printf		scanf
(2)文件IO(系统调用)
	1. 不带缓冲区
	2. 操作系统直接提供的函数接口
	3. 调用 系统调用 是很耗费资源的
	系统调用 (文件IO)
	read()			 Read()						_read()
	write()			 Write()					_write()
	linux 系统 		window系统	     		mac系统

标准IO(标准库函数)

常见的函数接口:
fopen    /    fclose	打开文件   /  关闭文件
fgetc	 /    fputc 	读1个字符  /  写1个字符
fgets    /    fputs     读字符串   /  写字符串
fread    /	  fwrite	读二进制文件	/  写二进制文件
fseek					移动文件指针

标准IO的使用 (带缓冲区)

1. fopen 
$ man 3 fopen
#include <stdio.h>
FILE *fopen(const char *path, const char *mode);
/****************************************************************
*功能:打开一个文件,返回FILE*类型的流指针
*参数:@path 指定文件路径 相对路径/绝对路径
*	  @mode 指定文件打开的模式
*		r:  以读的方式打开一个文件,同时文件指针指向文件开头
*		r+: 以读写的方式打开一个文件,同时文件指针指向文件开头
*		w:	以写的方式打开一个文件,如果文件存在清空,如果不存在创建文件,
*				同时文件指针指向文件开头
*		w+: 以读写的方式打开一个文件,如果文件存在清空,如果不存在创建文件,
*				同时文件指针指向文件开头
*		a: 以写的方式打开一个文件,如果不存在创建文件,如果文件存在以追加方式写,
*				同时文件指针指向文件结尾
*		a+: 以读写的方式打开一个文件,如果不存在创建文件,如果文件存在读文件指针在
*				文件开头,写文件指针在文件结尾(追加方式写)
*
*返回值: FILE * 
*		成功返回 FILE *(FILE pointer)  流指针
*		失败返回 NULL, 并且更新设置错误码 errno
*****************************************************************/
eg: fopen.c

2. perror
#include <stdio.h>
void perror(const char *s);

#include <errno.h>
int errno;
/****************************************************************
*功能:根据 errno 打印出错误信息
*参数:@s  提示用的字符串  可以写任意字符串
*返回值: void
*****************************************************************/	
eg: perror.c
$ sudo chown root:root a.txt	// 改变文件所属用户

13
Permission denied: 权限不够
2
No such file or directory:  文件不存在,很可能是路径不错导致错误

3. fclose 
#include <stdio.h>
int fclose(FILE *fp);
/**********************************
*功能:关闭一个流指针
*参数:@fp 文件流指针
*返回值: 成功   0
*	   	 失败	EOF -1   更新 errno
***********************************/
4. fgetc
#include <stdio.h>
int fgetc(FILE *stream);
/**********************************
*功能:从指定流中获取一个字符
*参数:@stream 文件流指针
*返回值: 成功返回字符对应的 ASCII码值
*	   	 失败  EOF  -1   更新 errno
***********************************/
eg: fgetc.c 

5. fputc 
#include <stdio.h>
int fputc(int c, FILE *stream);
/**************************************
*功能:输出一个字符到指定文件流中
*参数:@c: 要输出的字符的 ASCII码值
*	   @stream:  输出到指定文件流
*返回值:  成功  返回写入的 ASCII码值
*		  失败  返回 EOF -1  更新 errno
****************************************/
eg: fputc.c

流(stream) 和 流指针(FILE *)

流:
	所有的IO操作都是简单的将数据从硬盘读到内存,从内存写到硬盘。这种
	数据的移动,就叫做字节流,也就流

流指针 (FILE *) (stream pointer)
	在标准IO中,每次成功打开一个文件(fopen),都会返回一个流指针(FILE *).
	,这个流指针就描述了一个文件。
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

Jade Bodhi

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值