21:32:23 2019-06-01
今天复习了一下C的字符串函数,顺便讲讲字符串函数的算法
首先 强调一下 字符串函数在 <string.h>头文件中
1.strcmp函数
用法:int strcmp(char *str1, char *str2);
功能:串比较,相等返回0,不相等返回字符串中第一个不匹配的字符的数值差(是str1-str2,数值差:也就是ASCII之差)
算法实现
int mystrcmp(char *p1,char *p2) { // *p1,*p2 用来存储字符串str1,str2的首地址(也就是字符数组名) int i=0; while(p1[i]==p2[i]&&p1[i]!=\'\0\') //从第一个字符开始比较,若相等且没有终止,一直向前 { i++; } int num; //用来代表返回值 if(p1[i]==\'\0\'&&p2[i]==\'\0\') //两字符串都结束的情况 { num=0; //判断为相等 } else { num=p1[i]-p2[i]; //讲字符ASCII码差值赋值给num } return num; }
2.strchr函数
用法:char *strchr(char *str, char c);
功能:在一个串中查找给定字符的首次出现的位置,若不存在返回NULL,否则返回首次出现位置的指针
算法实现:
char *mystrchr(char *str, char c) { if(str==NULL) { return NULL; } else { whlie(*str !=\'\0\') { if((*str)==ch) // *str等价于 str[i],也就是字符串中的某个字符 { return str; break; //相等返回地址并退出循环 } str++; } return NULL; } }
3.strcat函数
用法:char *strcat(char *destin, char *source);
功能:字符串拼接函数,成功返回首地址,否则返回NULL
算法实现:
char *mystrcat(char *str1, char *str2) { if (str1 == NULL || str2 == NULL) return NULL; char *p = str1;//用指针保存str1的首地址 while (*str1 != \'\0\') { str1++; } while (*str2 != \'\0\') { *str1 = *str2; str1++; } *str1 = \'\0\'; return p;//返回首地址 }
今天就先说到这儿,明天继续!
千万不要太依赖库函数,一定要自己动手实现实现,对于你们的理解和成长有很大的帮助。