- 博客(9)
- 收藏
- 关注
原创 三种模拟实现c库函数strlen的方法
3.递归 :调用函数,指针解引用得到字符返回1,’\0‘返回0,反复调用函数,通过参数改变指针位置。2.指针-指针:同类型的两个指针相减,得到的是两指针间相差的元素个数。1.计数器:遍历字符串直到遇到'\0'加测试函数的完整代码。
2024-07-05 16:01:15 187 1
原创 C语言两个scanf为什么无法连续读取,缓冲区是什么
上述代码运行第一个scanf()时,缓冲区为空,等待用户输入,我们从键盘输入一个字符并敲下回车,此时的缓冲区中不仅有用户输入的字符,还有读取了键盘敲回车产生的一个换行符。执行第二个scanf()时,直接从缓冲区读取\n,存储在bh中,然后打印\n,所以不会在等待用户输入,程序结束。遇到类似需要连续使用scanf()读取输入时,如果用以上代码运行会直接跳过第二个scanf()函数,只打印输入ch。用while循环吸收多余输入,直到读取到换行符(键盘敲下的回车转换为\n),读取到换行符可以认为该行输出结束。
2024-05-05 18:20:49 391 2
原创 AES加密算法详解
1 将明文将输入的明文按字节分组为一个4 x 4的矩阵。同时,初始化密钥扩展,根据输入的密钥生成一系列轮密钥,用于后续的轮函数。2 轮函数:对每一轮进行处理,包括字节替代、行移位、列混淆和轮密钥加。3 最后一轮:去除列混淆操作,只进行字节替代、行移位和轮密钥加。4 输出密文:将最后一轮处理的矩阵按列输出为密文。
2024-04-22 16:30:43 771 1
原创 密码学DES算法详解,3DES
DES是一种明文分组64bit,密钥长度64bit,有效密钥长56bit,输出密文64bit,进行16轮迭代的对称分组加密算法,des算法有三个入口参数:key(密钥),mode(工作模式,即加密or解密),data(明文)
2024-04-13 16:56:14 1482 1
原创 C语言常用录入文件,字符串函数
如果需要录入字符串,文件,常用gets()函数,但是函数会储存键盘输入的或者文本中本就存在的换行符,下面这个函数在该函数的基础上将换行符替换成空字符,将多行字符串合成一行,方便字符串的规范储存和后续操作,且可以检查输入是否为空。关于getchar()函数,strch()函数,fgets()函数的参数含义及详细用法可以参考主页里文章“处理字符串的常见函数”
2024-01-20 17:44:57 475 1
原创 ANSI C库用于处理字符串的函数strcpy/strcmp/strcat/,,模拟实现三个库函数
该函数不会拷贝空字符后面的字符,如果源字符串的字符少于n个,目标字符串就以拷贝的空字符结尾: 如果源字符串有n个或超过n个字符,就不拷贝空字符。如果s字符串中包含c字符(第二个参数字符),该函数返回指向s字符串首次出现的c字符的指针(末尾的空字符也是字符串的一部分,所以在查找范围内);如果s1字符中包含s2字符串中的任意字符,该函数返回指向s1字符串首位置的指针:如果在s1字符串中未找到任何s2字符串中的字符,则返回空字符。该函数把s2指向的字符串(包括空字符)拷贝至s1指向的位置,返回值是s1。
2023-07-24 18:06:08 77
原创 C标准库中常见的字符串I/O函数
但是它无法检查数组是否装得下输入行(该函数只接受一个参数,也就是数组首元素地址即数组名,所以并不知道数组有多少元素),如果输入行过长超过预留空间,会导致缓冲区溢出,如果多余字符占尚未使用的内存则暂时没有问题,但如果占用已使用的内存则会擦写数据,使程序异常或中止。首先把目标字符中的首字符设置为空字符,读取并丢弃随后的输入直到读取到换行符或者文件结尾,然后返回空指针。空字符:整形类型,通常占用一个字节,用于标记C字符串末尾的字符,对应的字符编码是0,其余字符编码不可能为0,所以\0不是字符串的一部分。
2023-07-03 14:09:56 85 1
原创 C语言,指针和数组知识总汇
该声明告诉编译器,该函数不能修改函数ar指向的内容,const的作用不是要求要求原数组是常量,而是要求编译器处理的时候将视为常量不可更改,如果函数不用修改数组则一般在声明型参的时候使用cosnt。(1)ar[2][4]当需声明一个指向该数组的指针时,不能使用int *ptr=ar;//可以用{}来给特定某个数组赋值,且具有覆盖效果For:power[]={1,2,3,4,4,[3]=9,55,55,55}//power[0]开始被依次赋值,power[3]=9,[4]=[5]=[6]=55.
2023-06-13 15:18:36 558 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人