自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 Linux高级编程 8.15

工作原理: strtok 会在 str 中查找 delim 中的字符,并将其替换为 '\0' ,从而将字符串分割成多个子串。每次成功调用都会返回一个指向当前分割后的字符串的指针,当没有更多的标记可分割时,返回 NULL。也能扩展文件的大小。如果文件大小小于指定的大小,则文件将扩展,并且新的空间将被初始化为 0;如果文件大小大于指定的大小,则文件将被截断到指定的大小。如果这个值小于文件当前的大小,文件将被截断;s:setp 下一步,步入,遇到函数,跳入函数(自定义函数才跳入,系统函数不用)

2024-08-18 21:00:11 862

原创 Linux高级编程 8.14 目录操作

* user information */用户的备注信息。/* shell program */用户的默认shell。/* home directory */用户的主目录。/* user password */用户密码。/* group password */组密码。/* group ID */用户组ID。/* group name */组名。/* username */用户名。/* user ID */用户ID。/* group ID */组ID。

2024-08-18 20:15:07 567

原创 Linux高级编程 8.13 文件IO

注意:0666的前导零是不能省略的,这标志着0666是八进制,同时在创建目录和文件时,系统会与默认的umask(0002)相减,以便控制新建目标和文件有合理的权限。,这里使用了strlen计算字符串的长度,不能用sizeof(buf),因为sizeof计算出来的是所占空间的大小,是512字节,但是hello只有5字节,剩下的五百多字节就会补'\0',但文本文件中是不能有'\0'的。.3标准IO所使用函数,如fopen,fgets,fclose等,文件IO使用open,read,write,close等。

2024-08-18 18:24:59 685

原创 Linux高级编程 8.13 标准IO(补充函数)

stdin,相当于输入stdout,相当于输出,直接输出到屏幕stderr,标准错误行缓冲,1k缓存区满或者遇到\n刷新行缓存多是关于终端的一些操作1.遇到\n刷新2.缓存区满刷新3.程序结束刷新4.fflush刷新 fflush(stdout);for(i=0;i<1025;return 0;

2024-08-16 11:08:39 555

原创 Linux高级编程 8.12 标准IO

这是因为系统中有umask,值为0002,新建文件和新建目录设置权限之后,会与此相减,形成一个比较合理的权限。fgetc/fputc 一个字符,一个字符地读,效率较低,文本文件和二进制文件都可以处理。man 2 xxx ===>查看xxx对应的系统调用函数。1代表着硬链接:两个文件名关联一个文件内容 ,硬链接只能链接文件,不能链接目录。功能:从s所在的本地内存中获取一行数据,并写入stream对应的文件流对象。对于太大的文件,可以加上less,减少显示内容,也就是显示文件的一部分。

2024-08-15 23:09:05 987

原创 学习C语言 8.10 枚举、位运算、指针函数

"枚举" 是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。使用阶段不同 --- 宏定义 --- 预处理阶段。如果是有符号类型的数据,右移时,最高位补的是符号位。如果有给定的值,则后续没有给值的 枚举元素 依次 加1。如果是无符号类型的数据,右移时,最高位补的0。(2). 枚举类型的 本质 实际是一个int类型的数据。(3). 枚举类型的变量 与 整型类型的变量通用的。函数指针:指向函数类型的指针 //基类型为函数类型的指针。size //表示申请的空间的大小,单位字节。

2024-08-10 23:39:25 879

原创 学习C语言 8.9 结构体和共同体

int (*compar)(const void *, const void *) //比较函数 --- 提供比较依据(由用户自己书写比较规则)//这是一个函数指针,实现函数回调。int是4个字节,union共用一块地址,所以7个char依次存放,char是1个字节,但是按照内存对齐,struct整体要能被4整除,所以整块的空间是12。unsigned 是为了防止符号位扩展,因为输出时是十六进制的,如果符号位为1,则打印出来的会有f,如下图。//如果结构体写在全局区域,此时的d是全局变量;

2024-08-09 23:59:57 969

原创 学习C语言 8.8 指针

与二位整型数组相同//p指向二维数组s//q 二级指针int i=0;for(i=0;i

2024-08-08 20:49:01 713

原创 学习C语言 8.7 指针操作数组

/数组名的值就是首元素的地址//c语言中 不支持 int[3] *//正确写法 int(*)[3]//p指向二维数组 a//p的基类型 int[3]

2024-08-08 00:13:33 764

原创 学习C语言 8.6 指针

可以看到,&a,p,*&p,&*p的值相同,而*&a就是a,由此可以看出*与&的作用相互抵消掉了。四种方式都可以打印出数组各元素,数组名是不能自增的,但是这里的a++是指针运算,因为函数的形参中是int *a,是指针变量。注意在函数传参时,考虑哪些变量是值传递,哪些变量是地址传递,需要修改的变量使用地址传递,也就是指针;形参 -- 数组形式 //本质上是一个指针类型变量int *a。//注意:定义时候的 * 修饰变量名的 表示定义的是一个指针类型的变量。//&a[0] 地址的类型 -- int *

2024-08-06 21:49:10 827

原创 学习C语言 8.5 预处理和指针

语法:#define 宏名 宏值注意:1. 预处理命令 都是以 # 开头的2. 宏名 命名规则 和 之前标识符命名规则一致注:宏名一般都写大写 ,以区别与普通变量名3. 预处理 实际上 是将 宏名 用 宏值(预处理阶段的 字符串) 原样替换 //文本替换注意:c语言字符串中出现的 "宏名" 不会被替换,如下列代码中的printf引号中的N就不会被替换成10return 0;4. 应用a. 提高代码可读性b. 一改全改,方便代码修改。

2024-08-05 22:06:51 895

原创 学习C语言 8.3 函数

与一维数组相同,不能在函数里计算数组的长度,因为在函数里,编译器是当指针理解的,如:int (*a)[4]。这里的意思是说初始化的元素不是常量,因为这里的将a给b,a是个变量。全局变量是从程序运行(即./a.out时)就存在的,所以可以认为a,b是同时存在的,那么在编译器看来,这两行代码是没有先后顺序的,它就不知道这个值应该给谁。extern //外部的 ---表示你的变量 是存在外部的,不在当前文件中。extern修饰函数 //声明函数是在别处的定义的(函数的作用域都是全局的)

2024-08-03 22:18:48 731

原创 学习C语言 8.2 函数

对于n-1个盘子而言,一开始的起始位置是A,辅助位置是B,目标位置是C。此时n-1个盘子的起始位置是B,要移到C,所以目标位置是C,辅助位置是A。注意在函数中,int a[ ]表明是个数组,实际上编译器是将其当成int * a理解的,所以不能再函数里计算数组的长度,函数里的sizeof(a)认为是这个数组的地址,而不是这个数组整个的大小。汉诺塔(通过三个柱子A、B、C,每次只能搬一个盘子,盘子必须从大的在下,小的在上,将所有盘子从A移到C)是一个古老的数学问题,也可以通过递归实现。

2024-08-02 23:04:17 633

原创 学习C语言 8.1 函数

表示把功能实现出来形式:类型标识符 函数名 (形式参数)函数体代码(1)类型标识符数据类型 //表示函数要带出的结果的类型 (也就是返回结果的类型)注意:数组类型 不能做 函数返回结果的类型注意:a.如果函数不需要带出什么结果,此时返回结果的类型说明符 一般设计为void如果类型为void,一般不写return如果要写,写成return;b.如果 返回结果的类型 与 类型说明符不一致,以 类似说明符 为准。

2024-08-01 20:43:34 646

原创 学习C语言 7.31 字符串函数

a[0] | //int [4],也就是每个格子里面还放着4个int型元素。int[4][5] a[3] //n维数组 --- n-1维数组类型的 一维数组。

2024-07-31 21:28:03 736

原创 学习C语言 7.30 排序

+j(因为i只是控制总共len-1次趟数的,当i=4时,实际上还是第一趟,也就说j要比较4次,从0到i也就是4次,所以j<i)。里层循环是用来进行比较的,每次比较都会找出最小值,也就是说第一次会找出最小值,放在a[0],a[0]的值也就确定了,第二次会比较a[0]外的最小值,放在a[1],于是a[1]的值也确定了。外层循环是确定位置的,假设数组长度为6(len),那么最后是a[4]与a[5]进行比较,也就是意味着i只要取到4,4也就是len-2,所以for循环中,i<len-1;二分查找(折半查找)

2024-07-31 00:08:50 861

原创 学习C语言 7.29 循环和数组

通过break跳出循环,因为当i对j取余发现有能整除的,证明这个数不是素数,直接跳出循环,此时的循环次数j一定比i小,通过判断i和j之间的关系,可以知道这是不是个素数,如果是素数,证明循环完都没发现可以整除的,所以此时的j与i相等。j>2也就是说当j为3时会跳出循环,由于在判断之前有一个打印语句,所以会j打印0,1,2,3。如果定义a[10] ,确实用了a[10],这时会出现数组越界,此时a[10]的值是一个垃圾值。//判断标识符所代表的数据类型 ---去掉标识符,剩下就是标识符对应的数据类型。

2024-07-29 21:09:06 548

原创 学习C语言 7.26 输入输出

在某些情况下,需要清除缓冲区中的所有字符,确保后续的输入操作不受之前的输入的影响。如果不清楚缓冲区的话,输入1 2 b,b会被一直存放在缓冲区,每次的while判断条件都成立,将会一直循环,打印input again。//表示获取到getchar读取的字符的ASCII的值。-m ---- 按指定宽度输出 ,左对齐 (负号表示左对齐)getchar()清除缓冲区,getchar从缓冲区中读取字符并丢弃,直到遇到特定的条件。%f --- 转换为 十进制形式的小数,输出时默认保留6位小数,不足6位 补0。

2024-07-26 21:17:16 791

原创 学习C语言 7.25

/逗号运算表达式的结果 --- 是整个式子中最后一个表达式运算的结果。有符号短类型 =>长类型 //符号位扩展 (高位补符号位)a++ //后置加加 --- 先用(表达式的结果) 后加(让i自增)++a //前置加加 --- 先加(让i自增) 后用(表达式的结果)结合性 --- 同一优先级的运算 混合运算时,按照结合性进行结合。优先级 --- 不同优先级的运算 混合运算时,高优先级的先结合。二.赋值运算 = += -= *= /=一.算术运算 + - * / % ++ --

2024-07-25 20:31:59 290

原创 学习c语言 7.24

2|0 ... 1 (高位)‘a' ----编码(ASCII码)----0101010-----计算机中保存的实际上是这个符号对应的ASCII的编码值。1 | 111 1111 1111 1111 1111 1111 1111 1000 //反码。1 | 111 1111 1111 1111 1111 1111 1111 1001 //补码。1.23e-4 ----科学计数法形式 1.23 * 10^-4。float ----- 单精度(4字节)

2024-07-24 21:03:52 675

原创 嵌入式学习1

cp dir1 dir2 -r ---如果拷贝目录 要加上-r 表示递归拷贝(如果目标目录不存在,表示复制出一份;/home/linux ---主目录(家目录)对于每一个用户 都有自己对应的一个家目录,每个用户在自己的家目录下拥有最大权限。ls -lh 目录名/文件名 ---属性信息中的大小以K M G 这样的形式显示,即换算单位。mkdir -p 1/2/3 ---p表示parent,表示创建多级目录。cd - --- 切换到 上一次 操作的目录。

2024-07-23 20:36:49 572

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除