<c和指针>学习笔记4之字符串
1 字符串基础
NUL字节是字符串的终止符,但它本身并不是字符串的一部分,所以字符串的长度并不包括NUL字节。
(1)字符串长度
size_t strlen(char const * string)注意这里返回的是size_t,它是一个无符号整数类型,在表达式中使用无符号数可能导致不可预料的结果。例如
if(strlen(x)-strlen(y)>=0)这个表达式将会永远真 成立。
(2)不受限制的字符串函数
使用不受限制的函数之前,必须确定字符串实际上是以NUL字节结尾
char *strcpy(char *dst,char const *src)
注意:无法保证目标字符数组有足够的空间容纳需要复制的字符串
char *strcat(char *dst,char const *src)
int strcmp(char const *s1,char const *s2)
s1小于s2 返回一个小于0的
s1大于s2 返回一个大于0的
鉴于上面三种可能导致长度不够引出错误,出现了对应有长度限制的接口函数
char *strncpy(char* dest,char const*src,size_t len)
char *strncat(char* dest,char const*src,size_t len)
int strncmp(char const *s1,char const*s2,size_t len)
2 字符串查找基础
(1)在一个字符串中查找一个特定字符
char *strstr(char const *str,int ch)
char *strrchr(char const *str,int ch)
(2) 查找任何几个字符
char *strpbrk(char const *str,char const *group)
返回一个指向str中第一个匹配group中任何一个字符的字符位置。
(3)查找一个字串
char *strstr(char const*s1,char const *s2)
(4)查找标记
char *strtok(char *strr,char const *sep)
从字符串中隔离各个单独的称为标记的部分并丢弃分隔符。
2 内存操作
之前说过,字符串是以NUL字符结尾的,也就是说上面的函数处理字符串中内部有NUL的情况就不是那么方便了,就出现了如下函数。可以处理任意的字节序列
void *memcpy(void* dest,void const *src,size_t length) 从src起始位置赋值length个字节到dst的内存起始位置
void memove(void *dest,void const *src,size_t length)
void memcmp(void const *a,void const *b,size_t length)
<c和指针>学习笔记4之字符串的更多相关文章
- 【python学习笔记】3.字符串使用
[python学习笔记]3.字符串使用 字符串是一种序列,素有标准的序列操作对字符串用样适用,字符串是不可以改变 格式化操作符,%,左侧是格式化字符串,右侧是被格式的值,可以是一个值.元组.字典 数值 ...
- C++中的智能指针、轻量级指针、强弱指针学习笔记
一.智能指针学习总结 1.一个非const引用无法指向一个临时变量,但是const引用是可以的! 2.C++中的delete和C中的free()类似,delete NULL不会报"doubl ...
- python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...
- python学习笔记(二)、字符串操作
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...
- matlab学习笔记10_5 通用字符串操作和比较函数
一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张 ...
- C#学习笔记15:字符串、文件、目录的操作方法
字符串:不可变性 String str=”abcdf”; 将字符串转换为char数组:ToCharArray(); Char[] ch=str.ToCharAarray(); 将char数组转换为字符 ...
- 深入理解C指针----学习笔记
深入理解C指针 第1章 认识指针 理解指针的关键在于理解C程序如何管理内存,指针包含的就是内存地址. 1.1 指针和内存 C程序在编译后,以三种方式使用内存: 1. 静态. ...
- <c和指针>学习笔记6输入输出函数
1 错误报告 (1)perror函数 void perror(char const *message) error是标准库的一个外部整型变量(errno.h),保存错误代码之后就会把这个信息传递给用户 ...
- <c和指针>学习笔记5动态内存分配和预处理器
1 动态内存 比如声明数组得时候,我们需要提前预估数组长度,分配大了浪费,少了就更不好操作了.从而引入动态分配,需要的时候再分配. (1)malloc和free void *malloc(size_t ...
随机推荐
- DockPanel的使用与技巧
DockPanel的使用 1.建立一个WinForm工程,默认生成了一个WinForm窗体Form1. 2.引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Do ...
- 九度OJ 1061:成绩排序 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:17158 解决:4798 题目描述: 有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相 ...
- [Python]Pip换源以及设置代理
Install python package with proxy sudo pip install python-magic --proxy=https://your-proxy.com 2.No ...
- 给this添加属性
const f =()=>{ console.log(this) let a=5 console.log(this) console.log(this) this.ak =3} f() let ...
- tcp/ip (网络通讯协议)
介绍 TCP: 传输控制协议, IP: 网际协议, TCP/IP: 供已连接互联网的计算机之间进行通信的通信协议 在tcp/ip内部 , 包含一系列处理数据通信的协议: tcp.udp.icmp.dh ...
- MySql索引建立规则
为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引.本小节将向读者介绍一些索引的设计原则. 1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确 ...
- Spring Boot2.0之整合多数据源
一般公司分两个数据库: 一个放共同配置文件, 一个数据库垂直业务数据库 垂直拆分和水平拆分: 垂直是根据业务划分具体数据库 在一个项目中有多个数据源(不同库jdbc) 无限个的哈~ 根据包名 或者 注 ...
- python返回列表中指定内容的索引
import numpy as npa=[2,10,2,3,4,10,10]ans = np.where(np.array(a)==10)print(ans) 结果是:(array([1, 5, 6] ...
- BZOJ 2442 [Usaco2011 Open]修剪草坪:单调队列优化dp
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2442 题意: 有n个数a[i]从左到右排成一排. 你可以任意选数,但是连续的数不能超过k个 ...
- 存储过程IF --ELSE IF -- END IF 使用
CREATE OR REPLACE PROCEDURE BJPJYXK_HF_SD( sqid_p IN VARCHAR2,--申请单ID xkbh_p IN VARCHAR2,--新生成的许可证编号 ...