数据结构
字符串Str函数总结
·我们学习过很多关于求解字符串相关问题的函数,但是都是每遇到一次算认识了,一定程度上很少进行总结,最近又重新接触到了这类“Str函数”,发现自己还是有点掌握不牢固,以下仅是个人学习总结,有错误之处可指出。
如上图所示,在man手册中有许多关于str的函数,但是面试题中主要要我们掌握以上五种(strstr好像没那么常见),有四个打点的函数,其实用法和前面四种函数没有太大区别。
1.strcpy函数(拷贝字符串函数)
strcpy函数的含义:拷贝字符串(包括'0) strncpy函数的含义:拷贝前n个字节的字符串 如下图所示
/****************************************************************************** file name: 2024-05-06_StrTypes.c* author : tongyaqi1110@163.com* date : 2024-05-06* function : 总结关于字符串类型的Str函数证明及其用法 strcpy strlen strcat...* note : None* CopyRight (c) 2024 tongyaqi1110@163.com Right Reseverd*****************************************************************************/
#include <stdio.h>
//验证过程,不调用任何str函数
char *strcpy(char *dest, const char *src)
{while (*src != '\0'){*dest = *src++;//将原保留的字符串的数组元素用指针一个拷贝给新的数组dest++;}*dest = '\0';return dest;
}
//测试
int main()
{char A[] = "Hello world!";char B[20];// 使用自定义的strcpy函数复制字符串strcpy(B, A);// 打印复制后的字符串printf("destination=%s\n", B);return 0;
}
2.strlen函数(求字符串长度函数)
strlen和strnlen的区别同1.中解释。
#include <stdio.h>
size_t strlen(const char *s)
{size_t count = 0;while (*s != '\0'){count++;//只要字符串存在,遍历一个字符记一个数s++;//计完数依次挪动指向字符串的指针}return count;
}
//为了看起来简洁 后面的函数就不把测试放上来了
int main()
{char s[] = "Hello World!";size_t length = strlen(s);printf("Length of the string: %s\n", length);return 0;
}
3.strcat函数(将两个字符串连接的函数)
strcat和strncat的区别同1.中解释。
char*strcat(char*dest,const char*src){
char* p= dest;
while (*p != '\0') {
p++;//先遍历目标字符串
}
while (*src != '\0') {
*p =*src;//遍历完第一个字符串后,p指针指向末尾,现在再把p指针指向第二个字符串的第一个字符(你瞧,顺其自然的就连接了)
p++;
src++;
}
*p ='0';
return dest;
}
4.strcmp函数(比较两个字符串的)
int strcmp(const char*s1,const char*s2)
{while (*s1++==*s2++){if (*s1=='0'&&*s2=='0'){return 0;//一直比较到两个字符串遍历完 如果相等则返回0}return 1;//如果不相等则返回1}}