ESP8266 字符串操作函数详解

ESP8266字符串API 
int  os_sprintf( char *buffer,  const char * format,  [ argument ] … )
    把格式化的数据写入某个字符串缓冲区
    buffer:            char型指针,指向将要写入的字符串的缓冲区。
    format:            格式化字符串。
    [argument]...:    可选参数,可以是任何类型的数据。【若是字符串,结束字符‘\0’不写入】
    返回值X:        以format为格式argument为内容组成的结果被写入buffer 的字节数,
结束字符‘\0’不计入内
    注:详细说明请在百度百科中搜索”sprintf”,查看该词条。


void *  os_memset( void *dest,  int val,  unsigned int nbyte )
    将参数1(dest)所指向位置的nbyte个字节全部填充为val指定的ASCII值/数据
    dest:      目标地址
    val:        填充字符/数据
    nbyte:        填充字节数
    返回值:      指向dest的void*指针


void *  os_memcpy( void *dest,  const void *src,  unsigned int nbyte )
    从参数2(src)所指的位置起,拷贝nbyte个字节到参数1(dest)所指位置处
    dest:        目标地址
    src:        源地址
    nbyte:        拷贝的字节数
    返回值:        指向dest的void*指针


void *  os_memmove( void *dest,  const void *src,  unsigned int nbyte )
    从参数2(src)所指的位置起,拷贝nbyte个字节到参数1(dest)所指位置处
    如果目标区域和源区域有重叠的话,memmove能够保证源字符串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。
    当目标区域与源区域没有重叠则和memcpy函数功能相同。
    dest:      目标地址
    src:        源地址
    nbyte:    拷贝的字节数
    返回值:  指向dest的void*指针


int  os_memcmp( const void *str1,  const void *str2,  unsigned int nbyte )
    比较 参数1(str1)指向位置和参数2(str1)指向位置的前nbyte个字节(按字节比较)
    dest:            目标地址
    src:            源地址
    nbyte:            比较的字节数
    返回值<0:        buf1<buf2
    返回值=0:        buf1==buf2
    返回值>0:        buf1>buf2
    例:    char *s1="abc";    char *s2="acd";    int result = memcmp(s1,s2,3);
比较s1和s2的前3个字节,第一个字节相等,第二个字节比较中s1<s2(第三字节无需比较)。
所以result = -1


int  os_strlen(const char *s)
    计算给定字符串s的长度,不包括'\0'在内.
    s1:            字符串
    返回值:        字符串长度


char *  os_strstr( const char *str1,  const char *str2 )
    判断字符串str2是否是str1的子串
    str1:            字符串1(母串)
    str2:            字符串2(子串)
    返回值=NULL:    字符串2不是字符串1的子串
    返回值!=NULL:    字符串2是字符串1的子串,返回字符串2在字符串1中首次出现的地址


char *  strcpy( char* dest,  const char *src )
    把从参数2(src)所指位置起的字符串(含有'\0'结束符)复制到以参数1(dest)开始的地址空间
    dest:        目标地址
    src:        源地址
    返回值:        指向dest的char*指针

char *  os_strncpy( char *dest,  char *src,  unsigned int nbyte )
    把从参数2(src)所指位置起的字符串的前nbyte个字节复制到以参数1(dest)开始的地址空间
    注意:    
    如果src的前n个字符不含NULL字符,则结果不会以NULL字符结束。
即:如果n<src的长度,只是将src的前n个字符复制到dest的前n个字符,不自动添加    '\0',也就是结果dest不包括'\0',需要再手动添加一个'\0'。
    如果src的长度小于n个字节,则以'\0'填充dest直到复制完n个字节。
    src和dest所指内存区域不可以重叠,dest必须有足够的空间来容纳src的字符长度+'\0'。
    dest:        目标字符串
    src:        源字符串
    nbyte:        复制的字节数
    返回值:        指向dest的char*指针

int  os_strcmp( const char *s1,  const char *s2 )
    两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止
    s1:            字符串1
    s2:            字符串2
    返回值<0:    s1<s2
    返回值=0:    s1==s2
    返回值>0:    s1>s2

int  os_strncmp( const char *s1,  const char *s2,  unsigned int nbyte )
    比较字符串s1和s2的前nbyte个字符。
    注意:    要比较的字符包括字符串结束标志'\0'
并且一旦遇到'\0'就结束比较,无论nbyte是多少,不再继续比较后边的字符。
    s1:              字符串1
    s2:              字符串2
    nbyte:        比较的字节数
    返回值<0:    s1<s2(前nbyte个字节)
    返回值=0:    s1==s2(前nbyte个字节)
    返回值>0:    s1>s2(前nbyte个字节)
 
 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值