【C语言】关于字符串函数的使用及模拟实现(2) 1.1 库函数strcpy的使用在函数strcpy中,函数的返回类型为char* ,参数部分首先是指向目标地址的指针,其次是指向源地址的指针(由于源地址中内容不受影响,则可以使用const修饰),函数所需的头文件为string.h1.2 库函数strncpy的使用strncpy函数在strcpy函数基础上加入了一个参数,表示复制到目标地址去的个数1.3 模拟实现strcpy及strncpy模拟实现库函数strcpy模拟实现库函数strncpy。
【C语言】关于字符串函数的使用及模拟实现(1) 注意:在库函数中strlen的返回类型为suze_t(无符号整型),我们这里的返回类型为int型。由上可知,字符串追加的原理是找到所添加字符串的 \0 位置,再对其进行添加。使用strstr函数可以快速的定位到所查找字符串的地址。记录 ' \0 ' 之前的字符数。
【C语言】指针(4) 这里依然是和上面一样的问题,所以在swap交换的时候采用一字节一字节的交换方式,并以元素大小size为限制表示一个元素是否交换完成。--- 把一个函数的地址(指针)作为参数传递给另一个函数,当这个指针被用来调用其所指的函数时,就称它为回调函数。在函数内部,并不知道用户传递给我们的数据类型,所以根据最小的char类型以及待排序的元素大小size,来确定下一个元素的位置。在这之前,我们学习了很多关于指针的内容,我们先在这里简单的回顾一下。4、指针数组 -- 存放指针的数组,本质就是数组。
【Linux】日志管理 日志级别:emerg、alert、crit、err、warning、notice、info、debug。weekly:轮转的周期,一周轮转。notifempty:空文件不轮转。rsyslogd:系统专职日志程序。规则:生成日志及存储日志的策略。dateext:使用日期作为后缀。rotate 4:保留4份。create:轮转后创建新文件。4、at、crond产生的日志。3、查看已安装软件的配置文件。compress:是否压缩。2、安全和身份认证相关消息。1、启动rsyslogd。
【Linux】任务计划 ⑥每年6月2日2时0分和每年6月每周五2时0分执行。②表示每月1号、4号、6号2时0分执行。例: ①表示每月每日每时5分执行。4、执行任务后会发送到mail中。③每月5日~9日2时0分执行。④每月每日每时0分执行。⑤每月周五2时0分执行。六项必须全用空格隔开。5、任务计划存储位置。
【Linux】查找和压缩 语法:find [path] [options] [expression] [action]语法:tar 选项 压缩包名称 源文件。(2):tar -xf 文件 -C 路径。2、文件查找、依赖数据库 locate。(1):tar -xf 文件。1、命令查找 which。3、文件查找 find。-iname可不区分大小写。将解压文件放入指定路径。将解压文件放入当前路径。+5M:5M以上文件。-5M:5M以下文件。
【Linux】存储管理 ③RAID5:至少需要三块硬盘,保存会将数据保存在不同的硬盘上,但会在每个数据块加上校验信息。②RAID1:存数据时会产生一份备份在另一块硬盘,所以存放的数据相当于原来大小的两倍,即硬盘可用率变为原来的50%。给一个文件创建软链接后,原文件的改变会引起链接文件的改变(相当于一个快捷方式)。概念:记录文件的属性、大小、权限…①RAID0:两块以上硬盘,速度变为原来的N倍(N为硬盘数)。概念:存储文件的实际数据,文件较大时会占用多个block,默认大小为4G。(1)作用:保障数据安全性,提高读写速度。
【Linux】磁盘管理(2) 2、流程:硬盘->变成物理卷(PV)->加入卷组(VG)->卷组中获取空间,创建逻辑卷(LV)->格式化->挂载。语法:lvcreate -L 大小 -n 逻辑卷名 卷组名。1、特点:灵活调整大小,通常是空间不够用,进行扩充。语法:vgcreate 命名 路径。语法:vgremove 卷组名。语法:pvcreate 路径。语法:pvremove 路径。语法:umount 路径。⑥将创建的逻辑卷格式化。
【Linux】磁盘管理(1) 2、GPT(全局唯一标识分区表):支持>2TB、支持128分区。1、在SATA(串口)下,命名方式为sda、sdb、sdc…2、在IDE(并口)下,命名方式为hda、hdb、hdc…64G<内存<256G,swap最小为16G。接下来可自习设置分区大小,我这里设置为1G。16G<内存<64G,swap最小为8G。1、我们这里对刚添加的磁盘进行分区。4G<内存<16G,swap最小为4G。1、在关机状态下实行,点击编辑虚拟机设置。5、添加完毕的硬盘会在/dev目录下。4、之后点击完成添加完毕。
【Linux】管道和重定向 如下:列出/home下的文件,保存到file1文件中,再用grep提取关键字。如下:列出/home下的文件,再用grep提取关键字。语法:command1 | command2 | …将命令1的输出语句交给命令2执行,以此类推。将/home/file1 发送到lll用户。语法: |tee 路径/文件。交给另一个程序处理,又保存一份副本。>代表覆盖写入,>>代表追加写入。与正确写入相同,但2>不能省略。如下:1> 等价于>。不需判断是否正确,错误。
【Linux】用户的权限 语法1 删除新增的权限: setfacl -x (u/g/o):名 路径。语法:chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 文件/目录。语法: setfacl -m (u/g/o/a):名:所添加的权限 路径。例1:给文件file1的用户添加x权限。例2:给文件file1的组添加x权限。3、其它:其它用户/组对应的权限。1、属主:用户对应的权限。
【Linux】文件和用户管理(2) 2、“口令”,加密后的密码,为空表示没有密码,为*代表账号锁定,!3、“最后一次修改时间”,从某时刻到最后一次修改口令的天数。6、“警告时间”,系统开始警告用户到密码正式失效之间的天数。$2$开头,代表是用Blowfish加密。$6$开头,代表是用SHA-512加密。$5$开头,代表是用SHA-256加密。1、“登录名”,与/etc/passwd中用户名相同。4、“最小时间间隔”,两次修改口令之间所需的最小天数。7、“不活动时间”用户不登陆,账号保留的最大天数。$1$开头,代表是用MD5加密。
【Linux】文件和用户管理(1) 如下:mkdir -p /home/a/b/c就是在a目录下创建了b目录,在b目录下又创建了c目录。如下:使用cp -r 将/home/a下的b目录复制到/home目录下。如下:使用 cp 将/home下的文件aaa复制到/home/a中。如下:使用 mv 将/home/a/b下的c移动到/home/a中。如下:将/home/a中的c移动到/home/a/b并直接重命名为d。如下:使用rm -rf删除/home/a/b下的d目录。如下:使用cat查看/home/a/aaa的内容。
指针(2) 第二次定义指针pp,因为右边是&p,p为int*型。所以是int* *pp。第一次定义指针p,因为右边是&a,a为int型。所以是int *p。本质是数组,存放指针的数组。(1)数组名为数组首元素的地址。得到两个指针之间的元素个数。*所代表的含义不相同。
操作符(2) exp1成立,则执行exp2,返回exp2。exp1不成立,则执行exp3,返回exp3。&为取地址操作符(只在操作符右边有一个表达式,若两边都有表达式,则为二进制下的与运算)当 && 运算符有一边不成立(为0),则后面的表达式不必继续执行。当 || 运算符有一边成立(不为0),则后面的表达式不必继续执行。&&左右两边表达式都成立(不为0)则成立。|| 左右两边表达式成立一个即可成立。相当于一个if{ }else{ }语句。从左到右执行,最后返回最右边的表达式。. 为结构成员访问操作符。