您的位置:首页 > 其它

字符串函数之strlen() , strcpy() 的模拟实现

2017-04-21 23:07 375 查看

1. strlen()函数

strlen()函数用于统计字符串的长度。直到碰到第一个字符串结束符’\0’为止。

利用库函数实现



接下来我们来模拟实现一下strlen()函数



2. strcpy()函数

作用:把从src地址开始且含有’\0’结束符的字符串复制到以dest开始的地址空间。

利用库函数实现



接下来我们自己模拟实现该函数的功能



其中,用 char * 作为函数返回值类型,是方便实现链式访问。

3. strcat()函数

strcat() 函数用来连接字符串,其原型为:

char *strcat(char *dest, const char *src);

【参数】dest 为目的字符串指针,src 为源字符串指针。

【功能】strcat() 会将参数 src 字符串复制到参数 dest 所指的字符串尾部;dest 最后的结束字符 NULL 会被覆盖掉,并在连接后的字符串的尾部再增加一个 NULL。

注意:dest 与 src 所指的内存空间不能重叠,且 dest 要有足够的空间来容纳要复制的字符串。

【返回值】返回dest 字符串起始地址。

实例: 连接字符串并输出

#include <stdio.h>
#include <string.h>

int main ()
{
char str[80];
strcpy (str,"these ");
strcat (str,"strings ");
strcat (str,"are ");
strcat (str,"concatenated.");
puts (str);
return 0;
}


输出结果:



4. strcmp()函数

strcmp() 用来比较字符串(区分大小写),其原型为:

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

【参数】s1, s2 为需要比较的两个字符串。

字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,若差值不为0 则将差值返回。例如字符串”Ac”和”ba”比较则会返回字符”A”(65)和’b’(98)的差值(-33)。

【返回值】若参数s1 和s2 字符串相同则返回0。s1 若大于s2 则返回大于0 的值。s1 若小于s2 则返回小于0 的值。

实例:对 4 组字符串进行比较

#include<stdio.h>
#include <string.h>

int main()
{
char *a = "aBcDeF";
char *b = "AbCdEf";
char *c = "aacdef";
char *d = "aBcDeF";
printf("strcmp(a, b) : %d\n", strcmp(a, b));
printf("strcmp(a, c) : %d\n", strcmp(a, c));
printf("strcmp(a, d) : %d\n", strcmp(a, d));
}


输出结果:



在liunx系统下对该源程序进行编译链接,输出结果为



对比两者所得结果可知:

<1>.当两个字符串不相等时,C标准没有规定返回值会是1 或 -1,只规定了正数和负数。有些实现会返回1或-1。

<2>.有些会把两个字符的ASCII码之差作为比较结果由函数值返回。但无论如何不能以此条依据作为程序中的流程逻辑。

5. strstr()函数

strstr()函数用来检索子串在字符串中首次出现的位置,其原型为:

char strstr( char *str, char substr );

【参数】str为要检索的字符串,substr为要检索的子串。

【返回值】返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL。

注意:查找时区分大小写。

#include<stdio.h>
#include<string.h>
int main()
{
char *str ="The road is tortuous,but the future is bright";
char *substr = "the";
char *s = strstr(str, substr);
printf("%s\n", s);
return 0;
}


输出结果为:



6.strchr()函数

strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:

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

【参数】str 为要查找的字符串,c 为要查找的字符。

strchr() 函数将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。

注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。

【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *s = "0123456789012345678901234567890";
char *p;
p = strchr(s, '5');
printf("%s\n", s);
printf("%s\n", p);
system("pause");
return 0;
}


输出结果为:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 strcpy strlen