字符串函数之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; }
输出结果为:
相关文章推荐
- 模拟实现strlen、strcpy、strcmp、strncmp等字符串函数
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- 字符串函数strcat, strcpy, strcmp, strlen实现模型
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- 模拟实现strlen、strcpy、strcat、strcmp函数
- 模拟实现strcpy,strcmp,strcat,strstr.strlen
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- C语言:模拟实现strlen、strcpy、strcmp、strReverse、strcat函数
- 模拟实现strlen、strcpy、strncpy、strcat、strcmp
- strcpy 和strlen函数的模拟实现
- 模拟实现strlen,strcpy,strcat
- 字符串训练(一)模拟实现strlen,strcmp,strcpy,strcat函数
- 模拟实现: strstr strcpy strlen strcat strcmp memcpy memmove
- 实现字符串函数,strlen(),strcpy(),strcmp(),strcat()
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- C语言模拟实现strcpy、strlen、strcmp、strcat
- 模拟实现strcpy、模拟实现strlen、模拟实现strstr函数
- 字符串函数模拟实现之strcpy、strncpy、strcmp、strncmp、strcat、strncat
- 模拟实现不受限制的字符串函数(strcat、strcpy、strcmp)