zoukankan      html  css  js  c++  java
  • <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)

    后面有基本函数的封装。。。 

  • 相关阅读:
    echarts 地图 动态 展示 结合css+js
    优化之误!
    SQL Server 运行计划操作符具体解释(3)——计算标量(Compute Scalar)
    NHibernate概括
    C++的IO操作
    (数据结构整理)NJUPT1054
    nginx模块开发
    Html学习(三) 分类学习
    android 屏幕适配
    【POJ 1845】 Sumdiv (整数唯分+约数和公式+二分等比数列前n项和+同余)
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/10613028.html
Copyright © 2011-2022 走看看