Linux编程---文件操作

标准 IO

ANSI C 设计的一组用文件IO 封装的操作库函数

(1)IO:  input  output

I: 键盘是标准输入设备 ====》默认输入就是指键盘  /dev/input
O: 显示器是标准输出设备 ==》默认输出就是指显示器

(2)文件

Linux中一切都是文件,文件用来存储数据(数据,指令)

分类:

- :普通文件

D:目录文件

c :字符设备

B:块设备

L:软连接(或符号链接)

P:管道文件-----系统用内存虚拟出的文件

S:套接字文件

(3)stdio.h

<stdio.h>在路径 /usr/include/stdio.h下

usr  :user resource  

so:动态库(或共享库):命名规则:lib 开头,so 结尾  ----/usr/lib

(4)man 手册的使用:

man man :所有man的帮助

System calls :系统调用

Library calls:一般都是跨平台的

查函数:man  数字(2或3) 函数名

(5)stream(流)

文件流(File Streams):在 C 语言的标准 I/O 库(stdio.h)中,使用 FILE 指针来操作文件流。例如,通过 fopen 函数打开一个文件会返回一个 FILE 指针,然后可以使用 fread、fwrite、fgets、fputs 等函数对流进行读写操作。

网络流(Network Streams):在网络编程中,通过套接字(Socket)进行数据传输时,可以将套接字视为一种流。数据可以像在文件流中一样进行发送和接收。

标准输入输出流(Standard Input/Output Streams):stdin(标准输入)、stdout(标准输出)和 stderr(标准错误输出)是在程序执行时默认可用的流。

字节流和字符流:在处理数据时,可能会涉及字节流(处理原始的字节数据)和字符流(处理字符数据,并根据特定的编码进行转换)。

文件读写

1.步骤

①打开文件;②io操作,读写操作;③关闭文件

2.文件打开

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

读指针和写指针是同时进行的

(1)功能:打开一个文件并建立一个流

(2)参数:①path:要打开文件的路径;

②mode:

r  : 只读,文件不存在报错,文件存在则只读打开

r+:读写,文件不存在报错,文件存在则读写打开

w :只写,文件不存在则创建,文件存在则清0只写打开

w+:写读,文件不存在则创建,文件存在则清0写读打开

a  :追加可写,文件不存在则创建,文件存在则追加只写,定位到文件最后增加内容

a+:追加读写,文件不存在则创建,文件存在则追加读写打开

返回值: 成功返回建立的文件流指针;失败返回NULL

3.读写操作相关:
(1)fgetc

int fgetc(FILE *stream);

①功能:从流中读取一个字符
②参数:stream:文件流指针
③返回值:成功返回读到字符的ASCII码值,读到文件末尾返回EOF;失败返回EOF -1

(2)fgets

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

①功能:从stream流对象关联的文件中获取size大小字节的文本数据
  并存储到s对应的本地内存(栈区数组,堆区内存)
②参数: s---要存储数据的本地内存;   size---要获取的数据长度,单位字节;stream---要获取的目标文件流对象,可以是stdin ,程序会阻塞等待,如果是普通文件fp 则指向文件第一行数据。
③返回值:成功返回指向有效数据的首地址,一般等于s的地址;失败 或者 文件末尾 NULL

(3)fread

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

①功能:从指定的stream对象中获取nmemb个大小为size字节的数据块到ptr所在的本地内存中。
②参数:ptr---要存储数据的本地内存一般是数组或者结构体指针;size---单个数据块的元数据大小,最小单元的大小;nmemb---要获取的数据块的个数,拷贝的数据块个数;stream---要获取数据的源文件流对象,如果是stdin,表示从键盘获取数据,如果是fp文件,则表示从普通文件获取。
③返回值:成功 小于等于nemeb的整数,表示获取的数据长度;失败 小于0,结尾 0。

(4)fwrite

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

①功能:从ptr所在本地内存中取出nmemb个大小为size的数据块写入到stream流对应的文件流对象中。
②参数:ptr--- 要写的数据块地址,一般是数组或者结构体指针;size --- 要写的数据块元数据大小,单位是字节;nmemb--- 要写的数据块的个数;stream ---要写的目标文件流对象。如果是stdout则表示数据会写到终端屏幕显示,如果是fp的普通文件则会写入到文件中。
③返回值:成功 小于等于nmemb 的个数;失败 <0
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值