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)

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

  • 相关阅读:
    团队冲刺第十天
    每日学习
    每日学习
    团队冲刺第九天
    每日学习
    2021.4.26
    2021.4.23
    2021.4.22
    2021.4.21
    2021.4.20
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/10613028.html
Copyright © 2011-2022 走看看