C和指针---字符串、字符和字节

CTF-Web15(涉及PHP代码审计-简单) 15.Once More 随便输入一个密码,check,显示:Invalid password 点击“View the source code” 查看到如下源码 <?php if (isset ($_GET['password'])) { if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE) { echo '<p>You password must be alphanumeric</p>';. 阅读详情

1.不受限制的字符串函数

1.1 复制字符串:
原型声明:char strcpy(char dest, const char *src);
头文件:#include <string.h> 和 #include <stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
1.2 连接字符串
原型声明: char strcat(char dest, const char src);
头文件:#include <string.h>
功能:把src所指向的字符串(包括“\0”)复制到dest所指向的字符串后面(删除
dest原来末尾的“\0”)。要保证
dest足够长,以容纳被复制进来的
src。*src中原有的字符不变。返回指向dest的指针。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
1.3 字符串比较
原型声明:int strcmp(const char *str1, const char *str2);
该函数返回值如下:
如果返回值小于 0,则表示 str1 小于 str2。
如果返回值大于 0,则表示 str1 大于 str2。
如果返回值等于 0,则表示 str1 等于 str2。

2.长度受限的字符串函数

char *strncpy(char *dest, const char *src, int n)
char * strncat(char *dest, const char *src, size_t n);
int strncmp ( const char * str1, const char * str2, size_t n );

3.字符串查找

3.1 查找一个字符:
函数原型:char *strchr(const char *str, int c)
参数:str-- 要被检索的 C 字符串。
c-- 在 str 中要搜索的字符。
功能:在参数str所指向的字符串中搜索第一次出现字符c(一个无符号字符)的位置。
返回值:返回一个指向该字符串中第一次出现的字符的指针,如果字符串中不包含该字符则返回NULL空指针
函数原型:char *strrchr(const char *str, int c);
所属库: string.h
函数功能:查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回这个位置的地址。如果未能找到指定字符,那么函数将返回NULL。使用这个地址返回从最后一个字符c到str末尾的字符串

3.2 查找任何几个字符
char *strpbrk(const char *s1, const char *s2);
这个函数返回一个指向str中第1个匹配group中任何一个字符的字符位置,如果未找到匹配,函数返回一个NULL的指针。

3.3 查找一个子串
char *strstr(const char *haystack, const char *needle)
haystack – 要被检索的 C 字符串。
needle – 在 haystack 字符串内要搜索的小字符串。
该函数返回在 haystack 中第一次出现 needle 字符串的位置,如果未找到则返回 null。

4.错误信息

char *strerror(int errnum)
errnum–这是错误的数字,通常是errno
这个函数把其中一个错误代码作为参数,并返回一个指向用于描述错误的字符串的指针

5.内存操作

5.1 void* memcpy(void* dest,const void* src,size_t num)
功能:函数memcpy从src的位置开始向后复制num个字节的数据到dest的内存位置
说明:
•这个函数在遇到’\0’不会停下来
•如果src与dest任何的重叠,复制结果都是未定义的

5.2 void* memmove(void* dest,const void* src,size_t num)
功能:和memcpy区别在于dest与src内存块可以重叠

5.3 void memcmp(const void ptr1,const void* ptr2,size_t num)
功能:比较内存区域buf1和buf2的前count个字节。该函数是按字节比较的
返回值:
当buf1 < buf2时,返回值<0
当buf1 = buf2时,返回值=0
当buf1 > buf2时,返回值>0

5.4 void* memchr(const char* ptr ,int value,sizez_t num)
功能:从buf所指内存区域的前count个字节查找字符ch。
返回值:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL

5.5 void* memset(void* str,int value,size_t num)
按字节设置,进行赋值
功能:以str的起始位置开始的n个字节的内存区域用整数value进行填充
返回值:目标str内存起始地址
说明:
•memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’
•如果用malloc分配的内存,一般只能使用memset来初始化
•memset可以方便的清空一个结构类型的变量或数组,它可以一字节一字节地把整个数组设置为一个指定的值

C和指针 第9章 字符串、字符和字节 9.13 问题 阅读详情

相关推荐

Linux PE vs WinPE:为何麒麟系统修复需要专属工具?

本文探讨了Linux PE与WinPE在修复国产麒麟系统时的关键差异,强调了专属工具的必要性。通过分析文件系统兼容性、引导修复、硬件适配和安全合规等方面,揭示了通用PE工具的局限性,并提供了构建专属修复工具链的实用方案,确保系统维护的高效与安全。

weixin_29290863的博客 1056

C和指针 第9章 字符串、字符和字节 9.5 字符串查找基础

C和指针 第9章 字符串、字符和字节 9.5 字符串查找基础

weixin_客子光阴的博客 247

MEMS惯性传感器关键参数解析与误差优化策略

本文深入解析了MEMS惯性传感器的关键性能参数,如零偏稳定性、噪声与随机游走、振动整流误差等,并阐述了这些误差如何导致设备导航漂移、姿态不稳等问题。文章重点探讨了从硬件选型、系统设计到校准补偿、算法融合(如卡尔曼滤波)以及温度补偿等实战优化策略,旨在帮助工程师有效提升自动驾驶、无人机等设备的测量精度与稳定性。

weixin_28363123的博客 414

C和指针_第9章_字符串、字符、字节_学习笔记

2.strclen、strcpy、strcat、strcmpstrlen注意:size_t strlen( char const *string);    strlen返回的值是无符号整型。所以以下代码注意:if( strlen( x ) &gt;= strlen( y ) ) //不等价于 if( strlen( x ) - strlen( y ) &gt;= 0 )    //该语句永远为真...

博客 326

基于51单片机的电压表【0-20V,ADC0832,4051,自动量程】(仿真)

自动换挡式数字电压表就是一个基于单片机的能自动切换量程的数字电压表,其作用是在使用低位的AD转换实现高精度电压测量,可以测量0~20V的电压,并且具有0~0.2V(待测电玉低于0.2V时),0~2V(待测电压低于2V时)和0~20V三个量程自动匹配测量,当待测电压值发生变化时,电压表可以根据输入电压情况自动选择合适的量程进行测量,并且把测量结果显示出来。(2)实现电压表精度测试,最高精度要求0.01V;(1)实现0~20V分3档式电压表;

qq_63964231的博客 1497

智能驾驶感知模块评测实战:如何用回灌测试提升BEV模型准确率(附数据集处理技巧)

本文深入探讨了如何通过诊断型回灌测试系统性地提升智能驾驶BEV感知模型的准确率与鲁棒性。文章详细拆解了从场景切片、时空对齐到多维指标分析的完整评测流水线,并针对BEV模型特有的深度估计、特征融合等环节提供了优化思路,旨在帮助工程师将海量路采数据转化为精准的模型迭代燃料。

weixin_29045585的博客 395

《C和指针》第九章 字符串、字符和字节

1.头文件string.h包含了使用字符串函数所需的原型和声明,字符串都是以‘\0’结尾 2.字符串长度  strlen函数  原型:size_t strlen(char const  *str) (做到自己可以编写出来实现)\ int strlen (char const *str){ int len=0; assert(str!=NULL); while(*str++!='\0') len

xiaoying1232的专栏 468

【无线通信】射频杂散(RF Spurious Emissions)

射频杂散(RF Spurious Emissions)是指在无线通信系统中,除了在指定频率范围内的预期信号之外,任何不需要的或非预期的射频信号。这些杂散信号可能会干扰其他通信系统,降低系统性能,并违反无线电通信法规。射频杂散通常包括谐波、次谐波、互调产物和其他非线性失真所产生的信号。

qq_38801607的博客 5424

[C和指针] ch09. 字符串、字符和字节

第九章:字符串、字符和字节 GitHub 链接:ch09. 字符串、字符和字节 本章比较基础,介绍了字符串相关函数,但实现方式却只字未提。毕竟这是一个入门级的书,可以理解。面试过程中,不论是 strlen() 函数还是 memcpy() 函数等等都是面试手写的大热点,这点需要额外注意。 本章总结及注意点 部分课后习题解答 9.13 问题 我个人感觉,是缺点。把各种事物混到一起或许效率能够大大提高,但出错几率也随之上升。就现代编程语言看来,语法的孤立性是很重要的。即一件事情就对应一种解决方法就行了

Y-puyu 的博客 364

音视频入门:H264、H265概念总结

添加链接描述 什么是H.264与H.265 H.264与H.265都是视频压缩格式,由于视频本身的码流太大,所以需要经过压缩然后再通过网络进行传输。H.264是目前比较主流的压缩算法,像视频会议设备一般都采用这个编码格式。基础的H.264可以支持在1M带宽下传输720P30帧/秒的图像;H.264 HIGH PROFILE支持在512K带宽下传输720P30帧/秒的图像。 H.265是比较新的压缩算法,可以更一步提高压缩比,随着我们现在生活中出现的视频格式越来越大(比如现在基本都是1080P甚至4K的显示器

weixin_40673765的博客 8936

C#与天文观测:Celestia模拟星空的奇幻之旅

Celestia就像一艘穿梭在星海中的小飞船,带领我们遨游宇宙。C#则是这艘飞船的智能导航系统,用代码指挥它飞向任何我们向往的星球或星系。首先,下载并安装Celestia,熟悉其基本操作和功能。创建一个星空目标列表,包括不同的恒星、行星和星系。// 示例:定义观察目标列表new SpaceObject("太阳"),new SpaceObject("月球"),new SpaceObject("火星")

java专栏 1456

《C和指针》第9章 字符串、字符和字节

本章全面介绍了C语言中字符串、字符和字节处理的相关知识。从字符串的基础概念,到各种字符串操作函数,包括复制、连接、比较、查找等,以及字符分类、转换和内存操作函数。了解这些函数的使用方法和注意事项,对于处理文本数据和进行内存管理非常重要。在实际编程中,要特别注意缓冲区溢出等问题,合理使用长度受限的字符串函数,并根据具体需求选择合适的字符和字符串处理函数。

qq_40844444的博客 899

Sigrity System SI SerialLink模式进行Pcie3协议仿真分析操作指导-pcie3_client_single_pre

Sigrity System SI SerialLink模式提供了10个协议合规性检查工具模板,用户可以将根据实际应用替换模板中的SPICE文件,然后进行协议仿真分析,同时软件还提供了目标结果的模板MASK以及该协议需要检查的项目,通过协议分析视为满足设计要求,下面介绍pcie3_client_single_pre仿真分析,具体操作如下。Random(Rj):随机抖动,该抖动用高斯概率分布来描述,通常是由热噪声和其它随机噪声引起的,默认为1.24%UI RMS(平均值),即和标准值的偏差为1.24%UI。

weixin_54787054的博客 598

C 和指针第 9 章 字符串、字符和字节 笔记

这章总体来说,简单,基本就是进一步介绍了字符串、字符和字节常用函数的使用,以及注意的事项。 9.1 字符串基础 字符串就是一串零个或多个字符,并且以一个模式为全 0 的 NUL 字节结尾。 头文件 string.h 包含了使用字符串函数所需的原型和声明。 9.2 字符串长度 就是它所包含的字符个数。 size_t strlen(char const *string); size_t 定义在 st...

molaifeng的专栏 326

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

关于字符串、字符、字节——参考《C和指针》

一、概论 本文意在自己回顾下一些概念以及自己写的一些库函数比如:strlen strcpy strcat strcmp memcpy memmove memcmp memchr memset之类的。 ①引出字符串: 字符串是一种重要的数据类型,但是C语言并没有显式的字符串数据类型,因为字符串以字符串常量的形式出现,或存储在字符数组中。 ②定义字符串: 字符串式一串零个或多个字符,并且以NUL字节结尾。NUL字节是字符串的终止符, 不是字符串的一部分,所以字符串的长度不包括NUL。 ③常量字符串不能被修改,c

qq_42615475的博客 161

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C和指针(六)字符串、字符、字节

字符串

mei_true的博客 519

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

肯尼斯·里科《C和指针》第9章 字符串、字符和字节(1)

作为补充的学习材料吧~

feiyu66666的博客 1073

c和指针 字符串 字符 字节

1. strspn   strspn(返回字符串中第一个不在指定字符串中出现的字符下标)  表头文件 #include&lt;string.h&gt;  定义函数 size_t strspn (const char *s,const char * accept);  函数说明 strspn()从参数s 字符串的开头计算连续的字符,而这些字符都完全是accept 所指字符串中的字符。简单...

decentway的专栏 150

C和指针读书笔记——字符串、字符和字节

1、NUL字节是字符串的终止符,但它本身并不是字符串的一部分,所以字符串的长度并不包括NUL字节; 2、 strlen函数返回一个类型为size_t的值,这是一个无符号整数类型,在表达式中使用无符号数可能导致不可预料的结果,如下: if(strlen(x) >= strlen(y)) ... if(strlen(x) - strlen(y) >= 0) ... 第一条语句没有问题,

技术随笔 777

Ubuntu 18.04下CH340/CH341驱动安装教程与常见问题排查

USB转串口芯片是嵌入式开发中连接电脑与单片机、传感器等设备的桥梁,CH340/CH341凭借低成本和高兼容性成为应用最广泛的方案之一。在Linux系统中,驱动加载与设备节点生成依赖内核模块、udev规则及用户权限等多层机制,任何一环出错都会导致设备无法识别或无法读写。理解芯片与内核的匹配关系、模块编译流程、串口权限配置和udev固定设备名的方法,能显著提升开发调试效率。本文针对Ubuntu 18.04环境下CH340/CH341驱动安装过程中的常见问题,提供从设备体检、内核自带模块加载到源码编译、开机自启

weixin_30357231的博客 390

C和指针(学习笔记)_第9章 字符串、字符和字节

1.字符串基础

溯源守拙的博客 257

C和指针 第9章 字符串、字符和字节

C和指针 第9章 字符串、字符和字节 9.1 字符串基础

weixin_客子光阴的博客 209

第九章 字符串、字符和字节[C和指针]

字符串是一种重要的数据类型,但是C语言并没有显式字符串数据类型,因为字符串以字符串常量的形式出现或存储于字符串数组中。 常用字符串函数如下: /*字符串长度计算函数 strlen,返回字符数*/ size_t strlen(char const *string) 不受限的字符串函数 /*字符串拷贝函数strcpy,返回值是第一个参数的拷贝*/ char strcpy(char *d

小角色的专栏 1052

c和指针 -- 字符串、字符、字节

字符串基础字符串就是一串零个或多个字符, 并且以一个位模式为全0的NUL字节结尾; 但是NUL并不是字符串的一部分, 所以字符串长度不包括NUL。字符串长度函数原型:size_t strlen(char const *string) { int length; for (length = 0; * length ++ = '\0'; ) length += 1;

williamgavin的博客 523

c和指针(6)字符串、字符和 字节篇

第9章 (1)复制字符串:

qingfengzaishou的专栏 656

《C和指针》读书笔记(第九章 字符串、字符和字节)

在C语言中,字符串和数组有很多相似之处,且官方提供了很多的库函数可供调用。那么字符串和数组这对姐妹花,究竟有着什么样的亲密关系,而作为我们本期的重点角色,字符串又有何独特之处呢?

weixin_43719763的博客 827
上一篇: C和指针---数组
下一篇: C和指针---结构和联合
ldxFashion
博客等级 码龄6年 0粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值