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. JS判断表单内容是否更改过

    1,根据具体标签判断 function JudgesubmitForm() { var judjeWs = false; var judjeAt = false; var judjeWd = fals ...

  2. form表单中经常用到的禁用获取值问题

    <input name="country" id="country" size=12 value="disabled提交时得不到该值 " ...

  3. int指令(软件中断指令)

    INT(软件中断指令)是CALL指令的一种特殊形式.call指令调用调用的子程序是用户程序的一部分,而INT指令调用的操作系统提供的子程序或者其他特殊的子程序. 中断服务子程序和标准过程的最大区别是 ...

  4. 27 Remove Element

    Given an array and a value, remove all instances of that value in place and return the new length. T ...

  5. Mvc Webapi+Fiddler调试 (WebAPI 一)

    Fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js, ...

  6. android studio SVN的搭建

    android studio 安装 SVN:http://www.it165.net/pro/html/201404/11412.html http://jingyan.baidu.com/album ...

  7. EditText 空指针问题

    今天在Android中碰到了这样一个问题,其实应该很少人会碰到,因为只有像我这种奇葩才会犯这种错误. 但既然解决了,我就想在这里跟大家分享一下,毕竟它困扰了我一个白天啊...不多说了,看下面... 其 ...

  8. MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在

    问题描述:在用vs生成MVC时若使用Internet应用程序为模版,项目建好后重新编译下无法通过,弹出错误: 解决方案:问题出来后,询问了身边很多人都是一头雾水,于是乎各种谷歌和百度,还好功夫不负有心 ...

  9. [Node.js]expressjs简单测试连接mysql

    下载好node.js和通过npm安装好express.js后,先写package.json { "name": "application-name", &quo ...

  10. linux----suid\sgid

    1.suid和sgid 都是针对二进制程序来说了,bash脚本不在它的作用范围. 2.如果一个二进制文件设置有suid,那么在userA用户执行它时,会以文件所属用户的身份来执行.sgid同理: 3. ...