一:字符串操作函数的功能及应用 1、strcpy()函数 Strcpy(字符数组1,字符数组2)此函数是字符串拷贝函数,它的作用是将字符串2复制到字符数组1中去。 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char str1[30] = { "hello world!!!" }; char str2[30]; strcpy(str2, str1); printf("%s", str2); system("pause"); return 0; } 2、strcat()函数 此函数是字符串连接函数,,其一般形式为strcat(字符数组1,字符数组2),作用是将字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值,即字符数组1的地址。 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char str1[30] = { "we are friend " }; char str2[30]= { "all the time!" }; printf("%s", strcat(str1,str2)); system("pause"); return 0; } 3、strcmp() 此函数是字符串比较函数,其一般形式为strcmp(字符串1,字符串2)。字符串比较规则是将两个字符串从左至右逐个字符相比,直到出现不同的字符或者遇到’\0’为止。 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char passwd; char key[30] = { "abcdef " }; scanf("%s", &passwd); if (strcmp(key, passwd) == 0) { printf("密码正确\n"); } else { printf("密码错误\n"); } system("pause"); return 0; } 4、strchr() 此函数功能是查找字符串中首次出现某个字符的位置。,成功返回所查找字符第一次出现的位置,失败返回NULL. #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> int main(void) { char string[17]; char *p, c = 'r'; strcpy(string, "thisisastring"); p = strchr(string, c); if (p) printf("字符c的位置在:%s\n", c, p); else printf("字符c没有找到"); system("pause"); return 0; } 5、strstr() #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char str[10]="1234xyz"; char *str1 = strstr(str, "34"); if (*str1) { printf("查找成功\n"); } else { printf("查找失败\n"); } system("pause"); return 0; } 6、strlen() 测字符串长度的函数。 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char str[10]="china"; printf("%d\n", sizeof(str)); printf("%d\n", strlen(str)); system("pause"); return 0; } 二:字符串操作函数实现 1、strlen()函数的实现 方法一: int my_strlen(const char*str) { int length = 0; while (*str ++!= '\0') { length++; } return length; } 方法二:使用指针-指针的方法实现 使用指针减去指针的方法的条件是:两个指针指向同一数组中的元素。 1:指针减去指针的结果是两个指针之间元素的个数,不是元素的长度。 2:如果两个指针指向两个不同数组的元素, 那么他们之间 相减的结果是未定义的。 int _my_strlen(char * s) { char* p = s ; while (*p != '\0' ) p++; return p - s ; } 2、strcpy()函数的实现 方法一: char *strcpy(char *dest,const char *src ) { if ((dest == NULL) || (src == NULL)) { return NULL; } char *ret_string = dest ; while (*dest ++ = *src++) != ’\0′); return ret_string; } 注:返回char * 指针的原因是为了实现链式表达式,如: int length = strlen(strcpy(dest, “hello world”)); 方法二: #include <stdio.h> #include <assert.h> char* my_strcpy(char *dest, const char * src) { assert(dest != NULL );//assert(dest); assert(src); char *ret = dest ; while (*dest ++ = *src++) { ; } /*while (*src != '\0') { *dest++ = *src++; } *dest = '\0';*/ return ret; } int main() { char arr[20] = "abc" ; char p[] = "change world!" ; //链式访问 printf( "%d\n", strlen(strcpy(arr, p))); printf( "%s\n", arr); system( "pause"); return 0; } 3、strcat()函数的实现 char * __cdecl strcat(char * dst, const char * src) { char * cp = dst ; while (*cp) cp++; while (*cp++ = *src ++); return(dst ); }
面试常考题:不调用库函数,怎样实现字符串操作函数?
原创
©著作权归作者所有:来自51CTO博客作者张丹CTO的原创作品,如需转载,请与作者联系,否则将追究法律责任
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【C语言加油站】详细解读字符函数与字符串函数
【C语言加油站】字符函数与字符串函数详细介绍字符函数与字符串函数的相关知识点……
C语言 字符串 字符函数 字符串函数 -
C++ 实现字符串分割函数 split
C++没有自带的字符串分割函数函数,可以手动封装一个。
C++ split 字符串分割 -
c++(字符串处理函数)
<br /> <br />#include <iostream.h><br />#include <string.h><br />void main(void)<br />{
c++ buffer string less include -
c++下字符串分割函数split实现
简单来说就是使用vector容器,以字符串为分界线,分割后的字符串以string保存在vector中。vec
c++ i++ #include 字符串 -
C++ | C++字符串
C++字符串C++ 提供了以下两种类型的字符串表示形式:C 风格字符串C++ 引入的 str
c++ 字符串 #include g++ -
C++常见的字符串处理函数
C++常见的字符串处理函数
C++字符串