1、 strcat
  extern char *strcat(char *dest,char *src);

  把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。

  返回指向dest的指针。

//将源字符串加const,表明其为输入参数
char* strcat(char* strDest , const char*s trSrc)
{
//后文return address,故不能放在assert断言之后声明address
char* address=strDest;
assert( (strDest!=NULL)&&(strSrc!=NULL) );//对源地址和目的地址加非0断言
while(*strDest)//是while(*strDest!=’\0’)的简化形式
{
//若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++,
//那么strDest将指向'\0'的下一个位置。/所以要在循环体内++;因为要是*strDest最后指
//向该字符串的结束标志’\0’。
strDest++;
} while(*strDest++=*strSrc++)
{
NULL;//该循环条件内可以用++,
}//此处可以加语句*strDest=’\0’;无必要
return address;//为了实现链式操作,将目的地址返回
}

2、 strchr

  char * strchr (const char *s,int c);

  找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。

char*strchr(char *s,char c)
{
while(*s!='\0'&&*s!=c)
{
++s;
}
return*s==c?s:NULL;
}

3、 strrchr

  char *strrchr(const char *str, char c);

  查找一个字符c在另一个字符串str中末次出现的位置,然后将该字符出现的地址返回。

4、 strcmp

  int strcmp(const char *s1,const char *s2);

  当s1<s2时,返回为负数;当s1=s2时,返回值= 0;当s1>s2时,返回正数

/*strcmp function*/
#include <string.h>
int strcmp(const char *sl,const char *s2)
{
/*compare unsigned char sl[],s2[]*/
for(;*sl==*s2;++sl,++s2)
if(*sl=='\0')
return();
return((*(unsignedchar*)sl<*(unsignedchar*)s2)?-:+);
}

5、 strcpy

  extern char *strcpy(char* dest, const char *src);

  把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

  返回指向dest的指针。

/**********************
*C语言标准库函数strcpy的一种典型的工业级的最简实现
*返回值:目标串的地址。
*对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
*参数:des为目标字符串,source为原字符串
*/ char* strcpy(char* des,const char* source)
{
 char* r=des;
 while((*(des++)=*(source++))!='\0');
 return r;
} /*while((*des++=*source++));的解释:赋值表达式返回左操作数,所以在赋值NULL后,循环停止*/

6、 strcasecmp

  int strcasecmp (const char *s1, const char *s2);

  用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。

7、 strcspn

  size_t strcspn ( const char *s,const char * reject);

  从参数s字符串的开头计算连续的字符,而这些字符都完全不在参数reject所指的字符串中。

  返回字符串s开头连续不含字符串reject内的字符数目。

8、 strdup

  extern char *strdup(char *s);

  strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。

  返回一个指针,指向为复制字符串分配的空间;如果分配空间失败,则返回NULL值。

9、 strlen

  extern unsigned int strlen(char *s);

  计算字符串s的(unsigned int型)长度,不包括'\0'在内

  返回s的长度,不包括结束符NULL。

10、 strpbrk

  char *strpbrk(const char *cs,const char *ct);

  依次检验字符串s1中的字符,当被检验字符在字符串s2中也包含时,则停止检验,并返回该字符位置,空字符NULL不包括在内。

  返回s1中第一个满足条件的字符的指针,如果没有匹配字符则返回空指针NULL。

char * strpbrk(const char * cs,const char * ct)
{
const char *sc1,*sc2;
for( sc1 = cs; *sc1 != '\0'; ++sc1)
{
for( sc2 = ct; *sc2 != '\0'; ++sc2)
{
if (*sc1 == *sc2)
{
return (char *) sc1;
}
}
}
return NULL;
}

11、 strspn

  size_t strspn (const char *s,const char * accept);

  strspn()返回的数值为n,则代表字符串s 开头连续有n 个字符都是属于字符串accept内的字符。

int strspn(const char *s,const char *accept)
{
const char *p;
const char *a;
int count = ;
for(p = s; *p != '\0'; ++p)
{
for (a = accept; *a != '\0'; ++a)
{
if (*p == *a)
{
break;
}
}//里面的for循环到此为止
if (*a == '\0')
{
return count;
}
++count;
}//外面的for循环到此为止
return count;
}

12、 strstr

  char *strstr(const char *haystack,const char *needle);

  strstr()会从字符串haystack 中搜寻字符串needle,并将第一次出现的地址返回;否则返回NULL。

char *strstr(constchar*s1,constchar*s2)
{
int n;
if(*s2)
{
while(*s1)
{
for(n=;*(s1+n)==*(s2+n);n++)
{
if(!*(s2+n+))
return(char*)s1;
}
s1++;
}
return NULL;
}
else
return (char*)s1;
}
char *strstr(const char*s1,const char*s2)
{
const char*p=s1;
const size_tlen=strlen(s2);
for(;(p=strchr(p,*s2))!=;p++)
{
if(strncmp(p,s2,len)==)
return (char*)p;
}
return();
}

13、 strtok

  char * strtok(char *s,const char *delim);

  用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为'\0'字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回下一个分割后的字符串指针。

  返回下一个分割后的字符串指针,如果已无从分割则返回NULL。

str系列---字符串函数的更多相关文章

  1. impala系列: 字符串函数

    --=======================常用字符串函数--=======================base64decode(string str) : base64 解码.base64 ...

  2. oc语言常用的字符串函数

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  3. shell编程系列19--文本处理三剑客之awk中的字符串函数

    shell编程系列19--文本处理三剑客之awk中的字符串函数 字符串函数对照表(上) 函数名 解释 函数返回值 length(str) 计算字符串长度 整数长度值 index(str1,str2) ...

  4. Sql Server系列:字符串函数

    字符串函数用于对字符和二进制字符串进行各种操作,大多数字符串函数只能作用于char.nchar.varchar和nvarchar数据类型.字符串函数可以用在SELECT或者WHERE语句中. 1. A ...

  5. mysql 开发基础系列5 字符串函数

    字符串函数 1.  concat (s1,s2,...sn) 连接里面的参数成一个字符串(注意上面写错了函数名称) SELECT CONCAT('ddd','CCC'); 2.  insert(str ...

  6. MySQL填充字符串函数 LPAD(str,len,padstr),RPAD(str,len,padstr)

    转: MySQL填充字符串函数 LPAD(str,len,padstr),RPAD(str,len,padstr) LPAD(str,len,padstr) 用字符串 padstr对 str进行左边填 ...

  7. 【C++实现python字符串函数库】一:分割函数:split、rsplit

    [C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...

  8. Pandas | 11 字符串函数

    在本章中,我们将使用基本系列/索引来讨论字符串操作.在随后的章节中,将学习如何将这些字符串函数应用于数据帧(DataFrame). Pandas提供了一组字符串函数,可以方便地对字符串数据进行操作. ...

  9. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

随机推荐

  1. 简述UITextField的属性和用法

    0.     enablesReturnKeyAutomatically 默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. 1.borderStyle ...

  2. c#中的数据类型简介(string)

    Sting 字符串 引入话题 字符串是一个引用类型,从string数据类型的代码定义中也可以看出它实现了IEnumerable<char>接口和IEnumerable接口,因此字符串可以看 ...

  3. 10个简单步骤,完全理解SQL

    此文章为转载 1. SQL 是一种声明式语言 首先要把这个概念记在脑中:“声明”. SQL 语言是为计算机声明了一个你想从原始数据中获得什么样的结果的一个范例,而不是告诉计算机如何能够得到结果.这是不 ...

  4. html5 Canvas处理图像 实例讲解

    最近在学习canvas,canvas有很强大的图像处理功能,下面写一个我的学习总结: canvas常用功能: 1. 绘制矩形.圆形.曲线.组合图形 2. 绘制文本 3.绘制渐变.变形的图形 4. 图片 ...

  5. smarty之缓存笔记

    smarty缓存技术 在smarty中,缓存分为:普通缓存,单模版都缓存,局部缓存. 缓存:1:首选打开缓存配置项:$smarty->caching=true; 2:缓存生命周期的配置选项:$s ...

  6. 关于Nexus 7的Usb host开发问题

    按照API Guides和搜索到的各种方法,都没办法把Nexus 7上面的USB 设备列举出来.使用市场上的软件依然不行. 在找demo的时候找到一位大神chainfire,他似乎有所解释 看来得换一 ...

  7. ERS卫星

    http://www.esa.int/Our_Activities/Operations/ERS-2 ERS-2 ROLE Earth observation (EO) LAUNCH DATE 21 ...

  8. JNDI support differences between Tibco EMS and ActiveMQ

    Introduction Recently our team was working on Veracity Quick Start sprint, when I was trying to migr ...

  9. Delphi Window 消息大全使用详解

    WM_CTLCOLORSTATIC = $0138; 当一个静态控件将要被绘制时发送此消息给它的父窗口:通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色 ...

  10. Oracle数据导入导出imp/exp(转)

    在oracle安装目录下有EXP.EXE与IMP.EXE这2个文件,他们分别被用来执行数据库的导入导出.所以Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 一.Oracle ...