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之字符串的更多相关文章

  1. 【python学习笔记】3.字符串使用

    [python学习笔记]3.字符串使用 字符串是一种序列,素有标准的序列操作对字符串用样适用,字符串是不可以改变 格式化操作符,%,左侧是格式化字符串,右侧是被格式的值,可以是一个值.元组.字典 数值 ...

  2. C++中的智能指针、轻量级指针、强弱指针学习笔记

    一.智能指针学习总结 1.一个非const引用无法指向一个临时变量,但是const引用是可以的! 2.C++中的delete和C中的free()类似,delete NULL不会报"doubl ...

  3. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  4. python学习笔记(二)、字符串操作

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...

  5. matlab学习笔记10_5 通用字符串操作和比较函数

    一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张 ...

  6. C#学习笔记15:字符串、文件、目录的操作方法

    字符串:不可变性 String str=”abcdf”; 将字符串转换为char数组:ToCharArray(); Char[] ch=str.ToCharAarray(); 将char数组转换为字符 ...

  7. 深入理解C指针----学习笔记

      深入理解C指针     第1章 认识指针   理解指针的关键在于理解C程序如何管理内存,指针包含的就是内存地址.     1.1 指针和内存   C程序在编译后,以三种方式使用内存: 1. 静态. ...

  8. <c和指针>学习笔记6输入输出函数

    1 错误报告 (1)perror函数 void perror(char const *message) error是标准库的一个外部整型变量(errno.h),保存错误代码之后就会把这个信息传递给用户 ...

  9. <c和指针>学习笔记5动态内存分配和预处理器

    1 动态内存 比如声明数组得时候,我们需要提前预估数组长度,分配大了浪费,少了就更不好操作了.从而引入动态分配,需要的时候再分配. (1)malloc和free void *malloc(size_t ...

随机推荐

  1. ViewPager总结

    https://github.com/youth5201314/banner compile 'com.youth.banner:banner:1.4.9' private void setBanne ...

  2. EasyNVR H5无插件摄像机直播解决方案前端解析之:如何在播放界面添加实时云台控制界面

    如何在播放器上加一个云台控制界面 问题: 对于实时直播的视频播放, 由于播放页面客观样式要求(一个播放器占据了整个页面),因此很难找出很合理的空间来放置其他功能按钮的位置(比如配合实时是平的云台控制界 ...

  3. Swift 学习笔记 (属性)

    属性可以将值与特定的类 结构体 或者枚举联系起来. 存储属性会存储常量或者变量作为实例的一部分.反之计算属性会计算(而不是存储值)值. 计算属性可以由类 结构体 和枚举定义.存储属性只能由类和结构体定 ...

  4. Flask:基本结构

    python有两个比较出名的网络框架,一个是django,一个是flask. 之前的django文章里面介绍了django的各种用法,这个系列开始介绍flask的用法.相比与django,flask更 ...

  5. [容易]Fizz Buzz 问题

    题目来源:http://www.lintcode.com/zh-cn/problem/fizz-buzz/

  6. Spring事务超时时间可能存在的错误认识

    摘自:http://jinnianshilongnian.iteye.com/blog/1986023, 感谢作者. 1.先看代码 1.1.spring-config.xml <bean id= ...

  7. 3D文字特效

    在线演示 本地下载

  8. Windows、Linux、Mac OSX编译jni动态库

    在不同平台下默认调用不同名字的动态库,在Windows平台调用name.dll,在Linux平台调用libname.so,在OSX下调用libname.jnilib.不同平台下的编译的方法也有些区别. ...

  9. CodeForces - 540D Bad Luck Island —— 求概率

    题目链接:https://vjudge.net/contest/226823#problem/D The Bad Luck Island is inhabited by three kinds of ...

  10. 51nod 1737配对

    题意:给定一个n个点的带边权树,  保证n是偶数,给这个树两两配对,使得配对后的点路径和最大,输出最大值. 其实是个很简单的题,但还是被绊了.这充分说明现在连简单题都做不来了555 单独考虑每条边.每 ...