Linux高级编程(io操作)

标准io:

标准io;

stdio.h
1,标准io的概念 1975 Dennis r IO库,C语言的标准,ANSI c
IO input output
I: 键盘是标准输入设备 ====》默认输入就是指键盘 /dev/input
O: 显示器是标准输出设备 ==》默认输出就是指显示器
Linux操作系统当中IO都是对文件的操作
C一部分,任何支持标准C的系统都可使用标准IO实现文件存储
标准IO在UNIX上是对文件IO的封装

讨论标准io指的是以计算机为中心,将信息进计算机的过程称为输入input,将出计算机的过程叫output。

注意:
文件是特别重要的,在linux之中一切皆文件:文件可以用来存储数据和指令。

头文件:

<>的是系统自带的头文件;
stdio.h是标准的输入输出头文件,
其中其默认路径在:/user/inlcude/stdio.h
而“”是系统自编的头文件,默认是当前文件所在的路径。

man手册:

man指的是manual。其中分为9个章节

1.shell commands 命令章节
2.system call 系统调用
3.Library calls 库调用,一般可以跨平台。
4.特殊文件(/dev等设备对应文件)
5.File formats and conventions 配置文件
6.games 简单游戏
7.Miscellaneous 杂项文件
8.system administration commands (root文件,给予管理员使用的)
9.kernel routines (非标准,列举软件更新信息)

man的使用:

作用:

man可以用来查电脑库中带有的函数介绍。

使用方法:

man + 手册章节数 (可省略)+ 要查的函数名。
一般所调用函数存在可选项的话,可选项的取值在下方的description会有介绍
而它的返回值可以看return模块的内容。

文件操作:

文件操作流程:
1.打开文件:FILE
2.IO操作
3.关闭文件

打开文件函数:

FILE *fopen(const char *patehname,char *mode)

char *pathname 指的是以打开文件所在的路径和文件名的字符串
char *mode指的是所要采用的模式的字符串

mode可分为4个:
r:打开文件时权限为只读
r+“打开文件权限为可写可读(不清空文件内容)
以上两个模式要求文件必须存在

w:把文件清空或者是创建文件,文件以只写打开。
w+:可读可写文件,但是前提每次都会将文件清空

a:文件不存在时创建,文件存在时则追加只写打开
a+:文件不存在时创建,文件存在时则追加读写打开,定位到最后的那个内容

返回值:
打开成功时返回建立文件对应的流指针
失败时则返回空指针NULL

IO读写操作:

fgetc函数:

int fgetc(FILE *stream);
FILE *stream 指的是打开文件的流指针,从指针所对应文件里面一个一个读字符。

返回值:
成功时:其返回值是所读字符的ascii码
失败时:要么是读取失败,要么是数据已经被读完了,此时返回EOF(即-1.

fputs函数

int fputs(int c,FILE *stream)
int c指的是所要写到文件里的字符的ascii码
FILE *stream指的是所要写内容的文件。

返回值:
成功时返回的是所打印出的字符的ascii码
失败时:返回的是EOF

注意:以上两个函数都是一个一个的读文件中的数据,然后一个一个的将数据写进文件。


fgets函数

用于读取文件中字符串的操作,一次读取一行,遇到换行符\n或者结束标志位\0就结束,不管有没有全部读取满

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

char *s指用于存放读取出来的字符串的地址。
因此在读取时需要准备一个字符数组来存放读取出来的字符串
如:
char buf[1024] ={0};//一般中括号中数组大小取1k~4k

int size 指的是要读多少个字符,//在读取多少个字符时要算上结束标志位。比如当设置为7时,指的是读取6个字符加1个标志位
FILE *stream指的时所要读取的文件

返回值:
成功时:返回的是存放字符串的地址。
失败时,返回的是NULL指针


fputs函数

用于写字符串,遇到结束标志位就结束写入

int fputs(const char *s,FILE *stream);

const char *s 指的是所要写入的字符串
FILE *stream指的是要写入的目标文件。

返回值:
成功时,返回的是一个非负数
失败时,返回的是一个EOF

==注意:==以上两个字符串的读取以及输出函数,其由于遇到结束标志位和换行符就会结束,所以不适合用于二进制文件的复制。

fwrite函数

用于自定义大小二进制数复制

size_t fwirte(const void *ptr,size _t size,size_t nmember ,FILE*stream)

const void *ptr 指的是所要读取数据的地址

size_t size:指的是所要读取数据数据类型的字节数

size_t nmember 指的是要读取这样的类型数据的次数

FILE *stream指的是所要读取文件的流指针。

返回值:
成功时:其返回值就是size_t nmember中的大小
失败时,其值是一个小于size_t nmember的数,或者零。

fread函数:

size_t fread(const void* ptr,size_t size,size_t nmember,FIlE *stream)

const void*ptr 指的是所要读取数据的地址,

size_t size指的是所要读取数据类型的字节数

size_t nmember 指的是要将这个数据读几份(一般当读的数据类型是数组时才考虑)

FIlE *stream指的是所要读的文件。

散知识点:

cp复制的原理:

从硬盘中取数据,然后将数据进入内存中处理,然后再将数据写进硬盘中。

vimdiff小工具:

可以比较两个文件不一样的地方,其不一样的地方会通过高亮标记出来。
使用方法:
vimdiff 加文件名

找文件路径的方法:

再ui中找到文件,然后再ui界面点击右键,打开终端界面。输入pwd就可以显示文件所在路径

state命令:

可以用来查看文件的详细信息。
使用方法:

state 加文件名
其可以显示文件详细的大小,时间,等等信息

流文件的分类:

二进制流:
以二进制一个一个字节的显示文件内部数据。\

od -t x1 文件路径|less

od指的是查看文件字节命令
-t指的是以二进制数查看
x后面数字指的是以一个一个字符打印

文本流:
将文本中的数据转换成字符查看
od -c x1 文件路径|less
——c指的是以文本的形式查看

局部变量初始化:

在定义局部变量之后如果不进行初始化,其内部空间的数据是混乱且随机的。
我们有三种方法处理:

1.初始化:
buf[1024] ={0};

2.memset函数
将空间按预定值填充
memset(void *p,int c,size_t size);
其中
void*p指的是所要清空空间的地址

int c指的是填充清空空间的目标数

size_t 指的是要清空多少个空间


3.bzero(void* P,size_t size).
用零填充空间,以二进制形式清零

文件权限:

1、d 2、rwx 3、r-x 4、r-x  52 6、linux 7、linux    84096 91012  2021 10、Videos/

通过`ll`命令可以查看文件权限:

其中分为以下参数:
1.文件类型
d 目录文件
c 设备文件
b 块文件
l 软连接,符号链接
p 管道文件 系统虚拟出的文件
s 套接字文件

2.指的是作者权限(用户权限)
r 可读
w 可写
x 可执行
可以将其转换为8进制数,当是横线的时候代表零,当对应位置上有字母时,则该位置上是1,其三位加起来,就可以当成是32进制数,可以通过数字来修改权限

3.指的是组成员权限。

4.其他成员权限

5.硬链接
多个文件关联一个内容太,现在没用了

6.用户名

7.组员名

8.文件大小

9.文件编辑时间

10.文件名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值