C语言
文章平均质量分 82
以C语言为基础的知识概念总结和分析
情话0.0
在今天不断地学习,能够弥补昨天的缺失
展开
-
C语言strstr函数与strtok函数详解
strstr() 函数与 strtok() 函数都属于字符串查找函数。原创 2022-09-17 11:39:56 · 681 阅读 · 0 评论 -
C语言内存函数详解
若想实现在 arr1 这样的一个数组里,将(1,2,3,4,5)拷贝到(3,4,5,6,7)的位置上就会出现错误,最终的执行结果会是(1,2,1,2,1,2,1,8,9,10)。为什么会有这样的结果,原因就在于将arr[0]和arr[1]的元素拷贝到arr[2]和arr[3]的位置上,此时的arr[2]和arr[3]的值已经发生了变化,你再将arr[2]的值拷贝到arr[4]时不是拷贝的数字三,而是数字一。①:和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。原创 2022-09-19 15:26:58 · 451 阅读 · 1 评论 -
C语言strlen函数详解
2.注意事项①字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ ); 例:输出结果:②参数指向的字符串必须要以 ‘\0’ 结束; 例如字符串的定义形式是这样: 输出结果会是一个随机值,因为在这个字符数组当中不知道 '\0’在何处。③函数的返回值为size_t,是一个无符号类型的数字。 此条事项是最容易忽视的,是一个易错点。例: 为什么会出现这样的结果,原因就在于:str1 的长度是 7,str2 的长度是 4,在原创 2022-09-11 19:29:21 · 3429 阅读 · 0 评论 -
C语言strcpy、strcnpy函数详解
①:源字符串必须以 ‘\0’ 结束,因为在拷贝的过程中是以找到源字符串中的 ‘\0’ 为止。②:若 num 小于等于源字符串长度且小于等于目标空间字符串长度,则不会添加 ‘\0’。①:若源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个;③:目标空间必须足够大,以确保能存放源字符串,否则将会导致内存泄漏。源字符串(被拷贝的字符串),const 表示该字符串无法被修改;①:将源字符串中的前 num 个字符拷贝到目标空间当中;②:会将源字符串中的 ‘\0’ 拷贝到目标空间。原创 2022-09-11 23:00:15 · 948 阅读 · 0 评论 -
C语言strcat、strncat函数详解
首先,dest 和 src 指针都指向字符串的首地址,当 dest 指针走到字符串末尾 ‘\0’ 处就开始了追加操作,那么字符串的首个元素就会将 ‘\0’ 覆盖 ,而这个函数的结束条件是 src 指针找到源字符串的 ‘\0’ ,但是,由于在追加操作的第一步已经将 ‘\0’ 覆盖,所以说根本就找不到结束标志,所以程序就会进入死循环。目标中的终止空字符被源字符串的第一个字符覆盖,并在目标中两者的连接所形成的新字符串的末尾追加一个新的空字符。②:目标空间必须足够大,以确保能存放源字符串,否则将会导致内存泄漏;原创 2022-09-15 16:40:44 · 2042 阅读 · 1 评论 -
C语言qsort函数的使用详解
qsort()函数是C语言库函数中的一种排序算法,其用到的排序思想是快速排序(quicksort)。它的独特之处在于可以排序任意类型的数组元素(整形、浮点型、字符串和结构体类型)。原创 2022-09-05 11:52:16 · 8868 阅读 · 1 评论 -
【C语言】动态通讯录管理系统
之前写过一个初级的通讯管理系统,里边对于通讯录的容量是提前设置好的,这有一个坏处就是当容量达到最大值时就无法再添加信息。所以为了解决这样的问题,可以选择动态内存函数进行动态管理,在必要时自主增添容量。C语言通讯录管理系统C语言动态内存管理。原创 2022-09-26 20:10:56 · 834 阅读 · 15 评论 -
【C语言】人机对弈——三子棋
当C语言学到二维数组的时候,我们便可以写一个小小的游戏了——三子棋。大概思路如下:首先给到玩家一个选择的界面,选择1开始玩游戏,选择0退出游戏,若是其他数字必须重新输入;当开始了游戏之后,界面会输出一个三行三列的棋盘,第一步玩家先走,走完之后进行判断是否赢棋,若没有则电脑下棋,同样也要进行判断是否赢棋,直到一方赢棋;若最终期盼已满还未分出胜负则表示为和棋。原创 2022-09-29 18:26:00 · 1292 阅读 · 25 评论 -
【C语言】函数栈帧的创建与销毁
随着不断地学习C语言,相信每个人都可能存在着一些疑惑?1.局部变量是怎么创建的?2.为什么局部变量的值是随机值?3.函数是怎样传参的?传参的顺序是怎样的?4.形参与实参是什么关系?5.函数调用是怎样做的?6.函数调用结束后怎样返回的?这篇文章所使用的环境是VS2013,在不同的编译器下,函数调用过程中栈帧的创建与销毁是有所不同的,具体细节取决于编译器的实现,当然大体逻辑结构都是类似的。原创 2022-10-05 12:05:05 · 1096 阅读 · 28 评论 -
【C语言】通讯录管理系统
通过使用C语言来创建一个通讯录的管理系统,管理人员可对成员信息进行管理。成员信息包括姓名、年龄、电话、性别以及住址,执行操作有增删改查这四项基本操作以及成员信息全览和信息排序。原创 2022-09-21 20:44:15 · 3931 阅读 · 2 评论 -
【C语言】扫雷游戏(超详细)
之前基于二维数组写过一个三子棋的小游戏,现在又可以完成一个小游戏——扫雷(9阶)。大概思路如下:1.首先创建一个菜单选项,选择 ‘1’ 进入游戏,选择 ‘0’ 退出游戏;2.初始化两个相同的棋盘,一个为mine棋盘,一个为show棋盘(两棋盘同为十一行十一列);mine 棋盘是有关雷的棋盘,有雷的位置初始化为 ‘1’,没有雷的位置初始化为 ‘0’,玩家不可见;show棋盘属于打印棋盘,最初全部初始化为 ‘*’,在排雷的过程中打印出来的show棋盘上的数字表示该点周围雷的总数。原创 2022-10-03 19:17:27 · 1296 阅读 · 18 评论 -
【C语言】设计程序判断电脑大小端模式
首先我们看一下数据在内存当中的存储。将数字 a 转化为16进制:0X00000001,而在内存当中我们可以清楚的看到刚好是相反的存放着。这是为什么呢?接下来将介绍大小端的概念并对其解惑。大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。原创 2022-09-21 23:28:06 · 1618 阅读 · 7 评论 -
【C语言】通讯录管理系统(文件版本)
之前写过两个版本的通讯录管理系统,存在一个缺陷就是所有的用户信息的临时的,当关掉程序后所有的用户信息都会丢失掉,为了使用户信息一直保存在文件当中,可以使用相关的文件操作的动态管理系统进行改进。原创 2022-10-12 16:41:19 · 1815 阅读 · 30 评论 -
【C语言】文件操作(超详细讲解)
计算机文件,属于文件的一种,与普通文件载体不同,这类文件是以硬盘为载体存储在计算机上的信息集合。在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。此片文章内容是针对于数据文件。原创 2022-10-11 23:09:51 · 1122 阅读 · 26 评论 -
【C语言】atoi函数模拟实现
基本上该函数的模拟实现要注意的细节都在上面的代码注释里。还要再解释的是为什么要将返回值定义成 long long 长整型,而不是stoi函数的返回值 int 型呢?这是因为在计算求和的时候万一出现越界,由于之前将返回值定义为 int 型,这时就会将已经越界的数字强制转换为非越界的数字,那么就会导致错误的输出结果和错误的合法性判断。原创 2022-10-15 18:27:22 · 883 阅读 · 39 评论 -
【C语言】自定义类型(结构体,位段,枚举,联合)
自定义类型:结构体,枚举,联合1. 结构体结构体是一些值的集合,这些值被称为成员变量,结构的每个成员可以是不同类型的变量。 结构体的声明:struct stu{ member-list;}variable-list;例如描述一个学生:struct stu{ char name[20]; int age; char tele[13]; char addr[20];}; 特殊声明:在声明结构的时候,可以不完全的声明。//匿名结构体类型:struct { char原创 2020-09-19 18:41:15 · 460 阅读 · 1 评论 -
【C语言】动态内存管理
free函数用来释放动态开辟的内存,是与内存开辟函数配套使用的。realloc函数的出现让动态内存管理更加灵活。有时会我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,那为了合理的时候内存,我们一定会对内存的大小做灵活的调整。那 realloc 函数就可以做到对动态开辟内存大小的调整。原创 2020-09-16 17:10:17 · 428 阅读 · 1 评论 -
【C语言】自定义类型(结构体,位段,枚举,联合)
int x;int y;} p1;//声明类型的同时定义变量p1 struct Point p2;//定义结构体变量p2 //初始化:定义变量的同时赋初值。x , y };struct Stu //类型声明 {//名字 int age;//年龄 };//初始化 struct Node {int data;转载 2022-10-16 11:31:13 · 196 阅读 · 6 评论 -
【C语言】让你不再因为指针而感到头疼
想必对于很多刚接触C语言的同学来说关于指针的知识点很头疼,就感觉跟树枝一样错综复杂,最终搞得自己不知道指针该指向哪里,此片文章就对指针做一个详细介绍,希望能够帮到你!在计算机科学中,指针是编程语言中的一个对象。指针是内存地址,指针变量是用来存放内存地址的变量,利用内存地址可以直接指向存在电脑存储器中的那块内存单元,从而能找到所需的变量单元,也就是说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。//在内存中开辟一块空间 int * p = & a;原创 2022-10-18 17:24:10 · 1148 阅读 · 39 评论