c语言字符串处理函数

  • 格式:doc
  • 大小:81.50 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言字符串处理函数

一、函数

1、字符串的长度strlen()

说明:

返回s的长度,不包括结束符NULL。strlen(char*)函数求的是字符的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止。

与sizeof()的区别:

A、char ss[10]="";

sizeof(ss) = 10;

strlen(ss) = 0;

B、char *aa = "asd";

sizeof(aa) = 4;

strlen(aa) = 3;

C、sizeof是在编译期间计算其值;

Strlen在运行期间计算返回值

D、sizeof是操作符(关键字),strlen是函数。

E、.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。

F、当适用了于一个结构类型时或变量,sizeof 返回实际的大小,

当适用一静态地空间数组,sizeof 归还全部数组的尺寸。

sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸

自定义strlen()

int strlen(const char *str)

{

assert(str != NULL);

int len = 0;

while((*str++) != '\0')

len++;

return len;

}

2、比较字符串大小函数

区分大小写:strcmp()

(1)函数原型:int strcmp(char*str1,char*str2);

函数说明:通过比较字串中各个字符的ASCII码,来比较参数Str1和Str2字符串,比较时考虑字符的大小写。

返回值:比较字符串str1和str2的大小,如果str1小于str2,返回值就<0,反之如果str1大于str2,返回值就>0,如果str1等于str2,返回值就=0,

自定义实现:

int strcmp (char* a,char* b)

{

int k=0;

for( ; a[k] && b[k] && (a[k]==b[k]) ; k++);

return(a[k]-b[k]);

}

strncmp()

(2) 函数原型:int strncmp(char *str1, char *str2, int maxlen);

函数说明:比较字符串str1和str2的前maxlen个字符

返回值:比较字符串str1和str2的大小,

如果str1小于str2,返回值就<0;

反之如果str1大于str2,返回值就>0;

如果str1等于str2,返回值就=0;

maxlen指的是str1与str2的比较的字符数。

自定义实现:

int strncmp(char *str1, char *str2, int maxlen)

{

if (maxlen == 0)

{

return 0;

}

int k=0;

for (;str1[k]&&str2[k]&&(str1[k]==str2[k])&&(k

;

return str1[k] - str2[k];

}

不区分大小写:

1)忽略大小写---strcasecmp

函数原型:int strcasecmp (const char *s1, const char *s2);

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

2)忽略大小写—stricmp

函数原型:int stricmp(char *str1, char *str2);

函数说明:以大小写不敏感方式比较两个串

3)比较一部分—strncmpi

函数原型:int strncmpi(char *str1, char *str2, unsigned maxlen);

函数说明:比较字符串str1和str2的前maxlen个字符

5)内存区域比较---memcmp

函数原型:int memcmp(void*buf1,void *buf2,unsigned int count)

函数说明:比较内存区域buf1和buf2的前count个字节。Void*是指任何类型的指针。

6)内存区域部分比较-- memicmp Void*是指任何类型的指针。

函数原型:int memicmp(void*buf1,void *buf2,unsigned int count)

函数说明:比较内存区域buf1和buf2的前count个字节,但不区分大小写。

以上比较函数的返回值:

若参数1中字符串和参数中2字符串相同则返回0;

若参数1中字符串长度大于参数2中字符串长度则返回大于0 的值;

若参数1中字符串长度小于参数2中字符串长度则返回小于0的值。

3、从字符串中提取子串

1)提取子串—strstr (这个实现传说很复杂)

函数原型:char* strstr(char*src,char*find)

函数说明:从字符串src中寻找find第一次出现的位置(不比较结束符NULL)

返回值:返回指向第一次出现find位置的指针,如果没有找到则返回NULL

2)提取分隔符间字串—strtok

函数原型:char *strtok(char *s, char *delim);

函数说明:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。

首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。strtok在s中查找包含在delim中的字符并用NULL('')来替换,直到找遍整个字符串。

返回值:从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点

举例:

#include #include int main(){ char *s="Golden Global View"; char *d=" ";

char *p;

p=strtok(s,d);