strlen
strlen | |
头文件 | #include <string.h> |
格式 | size_t strlen( const char* str) |
功能 | 计算字符串长度 |
返回值 | 返回字符串的长度 |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//strlen的模拟实现 #include<stdio.h> #include<assert.h> size_t my_strlen( const char * str) { assert (str); int count = 0; while (*str != '\0' ) { str++; count++; } return count; } |
strcat
strcat | |
头文件 | #include <string.h> |
格式 | char* strcat(char* dest,const char* src) |
功能 | 追加子字符串到目标字符串后 |
返回值 | 目标字符串的首地址 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
//strcat模拟实现 #include<stdio.h> #include<assert.h> char * my_strcat( char * str1, const char *str2) { assert (str1, str2); char * tmp = str1; //找出str1中的斜杠零 while (*str1) { str1++; } //在str1上追加 while (*str1++=*str2++) { ; } return tmp; } int main() { char arr1[20] = "hello" ; char arr2[] = " world" ; printf ( "%s" ,my_strcat(arr1,arr2)); return 0; } |
strcpy
strcpy | |
头文件 | #include <string.h> |
格式 | char* strcpy(char* dest,char* src) |
功能 | 将参数src字符串拷贝至参数dest所指的地址 |
返回值 | 目标字符串的首地址 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//模拟实现strcpy #include<stdio.h> #include<assert.h> char * my_strcpy( char *str2, char *str1) { assert (str1, str2); char * tmp = str2; while (*str1) { *str2++ = *str1++; } return tmp; } int main() { char arr1[20] = "abcdef" ; char arr2[20] = "xxxxxxxxxxxxx" ; my_strcpy(arr2,arr1); printf ( "%s" , arr2); return 0; } |
strcmp
strcmp | |
头文件 | #include <string.h> |
格式 | int strcmp (const char* str1,const char* str2) |
功能 | 比较两字符串的大小 |
返回值 |
str1>str2 返回值>0 str1<str2 返回值<0 str1=str2 返回值=0 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//strcmp模拟实现 #include<stdio.h> #include<assert.h> int strcmp ( const char * str1, const char * str2) { assert (str1, str2); while (*str1 == *str2) { str1++; str2++; } return *str1 - *str2; } int main() { char arr1[] = "abc" ; char arr2[] = "abcd" ; printf ( "%d" , strcmp (arr1, arr2)); return 0; } |
strstr
strstr | |
头文件 | #include <string.h> |
格式 | char* my_strstr(const char*str,const char* substr) |
功能 | 在目标字符串中查找子字符串 |
返回值 | 目标字符串中,与子字符串相同的字符串首地址 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include<stdio.h> #include<assert.h> char * my_strstr( const char *str, const char * substr) { char * s1 = str; //防止str被破坏 char * s2 = substr; //防止substr被败坏 char * cur = str; //存储中间地址 assert (str && substr); //排除substr为空 if (substr == '\0' ) { return str; } while (*cur) { s1 = cur; s2 = substr; while (*s1 && *s2 && *s1 == *s2) { s1++; s2++; } if (*s2 == '\0' ) return cur; cur++; } return NULL; } int main() //模拟实现strstr函数 { char arr1[] = "abbbcdef" ; char arr2[] = "bbc" ; printf ( "%s" , my_strstr(arr1, arr2)); return 0; } |
到此这篇关于C语言字符串函数介绍与模拟实现详解的文章就介绍到这了,更多相关C语言 字符串函数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://z-ming.blog.csdn.net/article/details/122986054