自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 strerror复习

FILE是C语言文件操作的核心数据结构,它通过结构体封装了文件的底层句柄、缓冲区和状态信息,使程序员无需关心系统差异,只需通过指针即可完成文件读写。理解FILE的工作原理,能帮助更高效地处理文件IO,避免缓冲区溢出、资源泄漏等问题。对比项'r' (字符)"r" (字符串)引号类型单引号 ' '双引号 " "数据类型charchar* (指向字符数组的指针)存储大小1字节(仅字符本身)2字节(字符 + \0 结束符)本质单个字符的ASCII码值字符数组的首地址。

2025-06-14 23:58:33 598

原创 字符串和内存函数(2)

perror 是直接打印错误信息,在打印错误信息之前,会先打印自定义的信息。如下图所示:我们也可以认为:perror = printf + strerror函数如果他的参数符合下列条件就返回真iscntrl 任何控制字符isspace 空白字符:空格‘ ’,换页‘\f’,换行'\n',回车‘\r’,制表符'\t'或者垂直制表符'\v'isdigit 十进制数字 0~9isxdigit 十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F。

2025-06-11 20:21:54 991

原创 字符函数和字符串函数(1)

strlen的使用方法一:assert(str!= NULL);//保证指针str的有效性//assert——断言int i = 0;return i;方法二:递归assert(str!= NULL);if (*str!方法三:指针 - 指针。

2025-06-01 20:00:45 639

原创 strcmp及其模拟实现

/在 ASCII 码表中,K < e ,则返回结果为:-1。strcmp字符串比较。strcmp 模拟实现。

2025-05-31 05:19:51 307

原创 strcat及其模拟实现

/arr1原字符数 + arr2原字符数 + arr2[]中的结束符'\0' 刚好等于 总共需要的空间 31。//找目标空间的第一个出现的'\0'//找第一个'\0'

2025-05-31 04:35:30 1014

原创 ***++cpp

数组 c 存储的是字符串首字符的地址,这些地址同时也是整个字符串的起始地址。在C语言中,字符串的地址和其首字符的地址是相同的值,但类型解释不同:作为 char* 时,表示指向单个字符作为字符串使用时,表示以 null 结尾的字符序列的起始位置①指针移动:++cpp 使指针从 cp[0] 前移到 cp[1]②解引用链:* cpp → cp[1](值为 & c[2])* *cpp → c[2](值为 'p' 的地址)* **cpp → 'p'(字符本身)

2025-05-30 07:00:39 575

原创 KMP算法细讲

若相等或 k = -1 ,则 next[i]=k+1,//当 k ==-1 时,sub[k] 即 sub [-1],即 sub[k] 会导致访问 sub[-1](数组越界)。nextval[3] a:a 要回退到下标 0 位置,a 与 a 匹配,则 nextval[3] = nextval[0] = -1;nextval[8] a:a 要回退到下标 0 位置,a 与 a 匹配,则 nextval[8] = nextval[0] = -1;

2025-05-29 05:38:30 760

原创 Project回调函数qsort③进阶应用——模拟qsort写函数

由此可得,第 ( sz - 1 ) 个元素和第 sz 个元素的地址分别为:base + i * 4 ,base + ( i + 1 ) * 4;为方便各类型数组都能够调用这个函数 cmp ,故其参数应设计为:(char*)base+j*width,(char*)base+(j+1)*width。也因此,当要进行升序或降序排列时,两相邻元素的地址为 base + j * 24,base + (j + 1) * 24。、第sz个元素的位置都在上一个元素的4个字节之后( sz = i + 2 )。

2025-03-19 04:04:46 687

原创 Project回调函数qsort②进阶应用

/错误原因:((struct Stu*)e1)->age,((struct Stu*)e2)->age 已经拿到结构体数组元素了,//错误写法:return *((struct Stu*)e1)->age - *((struct Stu*)e2)->age;在C语言中, ->运算符和.运算符都是用于访问结构体成员的,但它们的使用场景不同。// 不需要再用解引用 * 通过地址去找它们。//库函数:strcmp。//库函数strcmp头文件。//使用qsort排序结构体。

2025-03-15 23:33:35 413

原创 回调函数qsort①冒泡排序数组

/ 待排数组起始位 数组元素个数 数组元素字节数 函数指针。C语言中的 qsort 函数是标准库函数,属于C标准库(C Standard Library)的一部分。1.库函数:qsort 是C标准库提供的函数,无需用户自行实现排序算法,直接调用即可。比较函数:必须返回整数,表示两个元素的相对顺序(负数、零、正数)。qsort 是跨平台的标准库函数,适用于所有符合C标准的编译环境。//每循环一次,就排好一个数字,所需排的数字就少一个。// 待排序数组的首地址。

2025-03-13 18:43:01 376

原创 数据在内存中的存储

基本的内置类型:char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数疑问:C语言有没有字符串类型类型的意义:1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。2. 如何看待内存空间的视角。

2024-11-21 15:01:34 649

原创 nowcoder OR62 倒置字符串

' '或'\0'时,此时cur-1便是单词逆置结尾地址,再将start与cur-1中间内容进行逆置。逆置单词:建立start作为单词逆置起始地址,建立cur作为可活动地址,当遍历数组到cur指向。// 限制输入字符个数不超过数组大小减1(留一个位置给'\0')//i < 99 &&逆置字符串:建立left、right作为数组起始地址与结束地址,首尾两端进行逆置。由于' '可能不止一个,因此需将逆置单词过程置于循环之中,直到cur遍历到'\0'为止。// 设置字符串结束标记。// 设置字符串结束标记。

2024-11-20 11:22:16 489

原创 Project指针pointer 作业

'\0') 中,你是在拿整型数组中的元素和字符 '\0' (其ASCII值为0,在字符数组中常作为字符串结束标志)进行比较。它的长度是通过计算得到的,比如在C / C++ 中可以使用 sizeof(arr) / sizeof(arr[0]) 来获取数组arr 的元素个数。在遍历整型数组时,通常是利用这个预先计算好的长度,或者利用指向数组的指针与数组的起始地址和结束地址(如起始地址为 arr ,结束地址为 arr + size )来控制遍历的范围,从而正确地访问数组中的每一个元素。

2024-11-18 18:10:25 868

原创 函数栈帧的创建与销毁

例如,对于返回 int 类型值的函数,会将返回值放在一个约定好的寄存器(如EAX寄存器,在x86架构下)或者栈上的特定位置。例如,对于函数 int add(int a, int b) ,如果调用 add(3, 5) ,首先会把5压入栈,然后把3压入栈。这个过程实际上是通过调整栈指针来实现的,使得栈顶回到调用该函数之前的位置,这样之前分配给这个函数栈帧的内存就被回收了。- 当一个函数被调用时,就会为这个函数创建一个栈帧,栈帧是栈上的一块内存区域,用于存放该函数的局部数据。

2024-11-16 04:58:33 303

原创 代码学习——进制转换

printf("转换后的二进制数为: %d\n", binary);printf("请输入一个十进制数: ");

2024-11-16 04:40:35 354

原创 Array 数组

C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就是正确的,所以程序员写代码时,最好自己做越界的检查。//每遍历完一次,小的在前,大的在后。所以数组的下标如果小于0,或者大于n - 1,就是数组越界访问了,超出了数组合法空间的访问。仔细观察输出的结果,我们知道,随着数组下标的增长,元素的地址,也在有规律的递增。数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n - 1。数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。

2024-11-08 14:45:34 954

原创 英语阅读单词短语积累

2024-10-21 10:18:42 142

原创 数据结构——求两个数的最大公因子

要求:必须采用递归和非递归两种方法。数据结构——求两个数的最大公因子。数据结构——求两个数的最大公因子。

2024-07-04 22:38:44 351

原创 TEST20221130第一阶段

思路:1,最大公约数相关定理:a,b为非零整数,a>b,a÷b=q……将一句话的单词进行导致,标点不倒置,比如:I like Beijing. 倒置后为:Beijing. like 1。正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。//x,y在for内进行初始化:程序先进入for内,再对y进行赋值,对x进行判断,最后进行调整。//m%a==0并且m%b==0,跳出循环:最小公倍数——最小的刚好能整除a和b的数。后,y的值为( )

2024-07-04 03:21:09 537

原创 C语言初阶——二级指针

Project20240701二级指针部分作业Project20240701二级指针部分作业第2题作业标题下面哪个是指针数组:( A )作业内容A.B.int* arr[];//未指定数组大小C.int** arr;//二级指针D.//这里的*arr被()括起来了,代表着arr是一个指针,而[10]代表含有10个元素的数组,即(*arr)[10]为数组指针。第3题作业标题如有以下代码:int num;}stu;

2024-07-01 14:09:07 616

原创 C语言初阶——实用调试技巧(新课学习)

/size_t my_strlen(const char* arr)//strlen返回类型:size_t——unsigend int。//}//这里虽然在遇到空指针,不执行代码,直接返回,拦截了空指针的问题,但没有报错,没有暴露问题,不易找出错误代码。//assert中放一个表达式,表达式的结果为假,则报错;//if (dest == NULL || src == NULL)//判断指针的有效性。//'\0'的ASCII码值为0。//'\0'的ASCII码值为0。//打印字符串:从起始位置开始。

2024-07-01 07:39:59 587

原创 C语言初阶——指针

int main()int a = 10;//在内存中开辟一块空间//这里我们对变量a,取出它的地址,可以使用&操作符。//a变量占用4个字节的空间,这里是将a的4个字节的第一个字节的地址存放在p变量中,p就是一个指针变量。//10//a的地址//*pa的地址——pareturn 0;2.指针和指针类型。

2024-06-25 23:58:36 1071 1

原创 C语言初阶——结构体(新课学习)

结构体结构体1. 结构体的声明1.1 结构的基础知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。1.2 结构的声明struct tag例如描述一个学生://名字int age;//年龄//性别//学号}Stu;//分号不能丢struct Stuint age;}s4,s5;//s4,s5也是结构体变量——全局变量int main()//s1, s2, s3是结构体变量——局部变量。

2024-06-25 23:50:45 1055

原创 C语言初阶——操作符作业代码

操作符使用部分操作符使用部分第1题作业标题下面代码的结果是:( )作业内容int main()a = 5;c = ++a;//逗号','的优先级最低。所以这里b=++c,而不是逗号表达式。//b=7//在这个表达式中,+=优先级最低,后缀++最高。a++ +c: a+c之后,a再++。因此:+ -> ++ a=9return 0;//(B)第3题作业标题交换两个变量(不创建临时变量)作业内容。

2024-06-23 23:12:39 496

原创 C语言初阶——操作符(新课学习)

所以:“异或虽好,可不要贪杯哦!赋值操作符int main()int a = 10;a += 5;a = 10;a = 5;a = 10;a &= 5;a = 10;a |= 5;a = 10;a ^= 5;return 0;单目操作符以a+1为例,在这个式子中,操作符+有两个操作数:a,1,因此这里的+是双目操作符。与之不同的,还有单目操作符,

2024-06-22 06:51:35 1074

原创 C语言初阶——数组的定义和初始化等_作业代码测试

/而strlen是一个计算字符串长度的函数,使用时需要引用头文件#include<string.h>,不包含\0,即计算\0之前的字符串长度。//总结摘要:sizeof就是一个计算数据类型所占空间大小的单目运算符,在计算字符串的空间大小时,包含了结束符\0的位置;//sizeof是C语言中的一个单目运算符,用来计算数据类型所占空间的大小,单位为字节;//实现reverse() 函数完成数组元素的逆置。//实现print() 打印数组的每个元素。//实现函数init() 初始化数组为全0。

2024-06-19 20:58:16 528

原创 C语言初阶——新课学习:数组

int main()int i = 0;for (i = 0;i <= 10;i++)//此时编译器就会报错。但其实当i等于10的时候,越界访问了。arr[i] = i;//此时编译器就会报错。return 0;

2024-06-19 20:58:09 697

原创 do…while作业代码

题目BC114 小乐乐排电梯描述小乐乐学校教学楼的电梯前排了很多人,他的前面有n个人在等电梯。电梯每次可以乘坐12人,每次上下需要的时间为4分钟(上需要2分钟,下需要2分钟)。请帮助小乐乐计算还需要多少分钟才能乘电梯到达楼上。(假设最初电梯在1层)输入描述:输入包含一个整数n(0 ≤ n ≤ 109)输出描述:输出一个整数,即小乐乐到达楼上需要的时间。示例1输入:1输出:2示例2输入:12输出:6int main()int a = 1;

2024-06-16 16:59:29 634

原创 函数作业代码

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>如:输入9,输出9 * 9口诀表,输出12,输出12 * 12的乘法口诀表。#include<math.h>#include<stdio.h>int Mul(int x, int y){ int mul = 0; mul = x * y; return mul;}int main(){ int a = 0; scanf("%d", &a);

2024-06-16 16:50:31 988

原创 C语言初阶——函数

int b = 0;return 0;↓↓strcat是C语言中的一个字符串函数,用于将两个字符串连接起来,即将第二个字符串追加到第一个字符串的末尾。该函数定义在string.h头文件中。strcat函数是C语言中非常实用的一个函数,可以方便地将两个字符数组或字符串连接起来。在使用时需要注意目标字符串的大小和源字符串的结尾,以及目标和源是否重叠等问题。函数的声明和定义//函数的定义——一种特殊的声明。

2024-06-13 21:17:02 1181

原创 C语言初阶——函数第一节课代码练习

int b = 0;return 0;↓↓。

2024-06-12 09:51:51 757

原创 C语言初阶——复习分支与循环语句2

include//system的头文件int main()//system是一个库函数,可以执行系统命令,cls是清空屏幕的一个命令。left++;right--;return 0;二、编写代码:实现模拟用户登陆情景,并且只能登陆三次(只允许输入三次密码,如果密码正确,则提示登陆成功,如果散卒均输入错误,则退出程序。

2024-06-10 01:47:15 643

原创 C语言初阶——for语句作业代码测试

for (a = 1;a < 10;b < 10;for (a = 1;a < 10;b < 10;

2024-06-09 16:51:59 386

原创 C语言初阶——goto语句

C语言命令电脑关机:CMD命令行窗口—>shutdown -s(关机),-t(设置关机) 60(60秒后关机)printf("请注意,您的电脑将在60s内关机,如果输入'PKU',就取消关机\n");printf("请注意,您的电脑将在60s内关机,如果输入'PKU',就取消关机\n");//strcmp在比较完成后,如果结果为0,则两个字符串相等。//两个字符串比较,不能直接用等号,而要将两个字符串传给strcmp函数。//strcmp需引用的头文件。//system需引用的头文件。

2024-06-09 16:36:46 451

原创 C语言初阶——do……while循环

语法:do循环语句:while (表达式);用do...while语句打印1~10int main()int i = 1;do//i大小没变,不可能大于10return 0;//打印结果:1无限循环...int main()int i = 1;doi++;return 0;//打印结果:1 2 3 4 5 6 7 8 9 10int main()int i = 1;dobreak;i++;

2024-06-09 16:26:14 1089

原创 C语言初阶——for循环

打印1~10打印1~10while循环int main()int i = 1;i++;return 0;for循环int main()int i = 0;for (i = 1/*初始化部分*/;i

2024-06-09 15:53:08 636

原创 C语言初阶——enum枚举

enum枚举enum SEX{ MALE=4, FEMALE=7,//中间用逗号,隔开 SECRET=7//未赋值之前,默认从0开始,按顺序输出};int main(){ //MALE=6;//赋值之后枚举常量无法再改变 printf("%d\n", MALE); printf("%d\n", FEMALE); printf("%d\n", SECRET); return 0;}

2024-06-09 15:44:40 236

原创 C语言初阶——while语句

/输入的字符对应的ASCII码小于数字0的ASCII码(48),或大于数字9的 ASCII码(57)。但与getchar不同的是它只会读取(只会拿)它该读取(该拿)的字符,它就不会读取(拿)回车对应的\n;如果输入缓冲区没有字符,也会与getchar一样,会一直等待,直到有字符出现为止。//直接去判断部分去判断:要不要进行下一次的循环。//getchar能获取字符,并把获取到的字符的ASCII码值放到ch里面。

2024-06-09 15:34:24 604

原创 C语言初阶——if语句与switch语句

int main()/*(判断表达式,为假)*/return 0;//(因此无法打印hehe)修改int main()//(判断表达式为真)return 0;if (a = 3)/*(这里不是“==”——判断,只有一个“=”——赋值。3≠0,为真,可以打印hehe)*/return 0;/*(这里是“==”——判断,。

2024-06-09 15:21:33 922

原创 C语言初阶——数据类型

scanf/*输入*/("%d %d", &/*取地址*/num1, &num2);int a = 99;int b = 20;

2024-06-09 14:45:04 177

空空如也

空空如也

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

TA关注的人

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