strlen:
unsigned long Strlen(const char *str){
unsigned long length=0;
for (; *str++!='\0'; length++) {}
return length;
}
strcpy:
char * Strcpy(char *str1,const char *str2){
char *str=str1;
for (; (*str++ = *str2++) != '\0'; ) {}
return str1;
}
strcat:
char * Strcat(char *str1,const char *str2){
char *str=str1+strlen(str1);
for (; (*str++ = *str2++) != '\0'; ) {}
return str1;
}
strcmp:
//返回第一个不同字符的ASCII值的差
int Strcmp(const char *str1,const char *str2){
for(;(*str1==*str2) && *str1!='\0';str1++,str2++);
return (int)(*str1-*str2);
}
字符串逆序:
char * Resverse(char *str1,const char *str2){
char *str=str1;
int length=(int)strlen(str2)-1;
str2+=length;
for (int i=length; i>=0; i--) {
*str++ = *str2--;
}
*str='\0';
return str1;
}
判断字符串是否回文:
void huiwen(const char *str){
int length=(int)strlen(str)-1;
const char *str1=str,*str2=str;
str2=str2+length;
char *flag="Yes";
for (int i=1; i<=length/2; i++) {
if (*str1++ != *str2--) {
flag="No";
}
}
printf("%s\n",flag);
}
判断父串中子串的个数:
void count(const char *str1,const char *str2){
int n=0;
for (;*str1 != '\0';str1++) {
if(*str1 == *str2){
const char *pt=str1,*str=str2;
int flag=1;
for (;*str !='\0'; pt++,str++) {
if (*pt != *str){
flag=0;
break;
}
}
if (flag==1) n++;
}
}
printf("%d\n",n);
}
求最长连续字符串:
void lstr(char *str1,const char* str2){
const char *str=str2;
int _count=0;
while(*str2!='\0'){
int i=0;
for(i=0;*str+i==*str2;i++){
str2++;
}
str=str+i;
if(_count<i){
str1=str1-_count;
_count=i;
for(int j=_count;j>0;j--){
*str1=*(str-j);
str1++;
}
}
}
*str1='\0';
}
#include <stdio.h>
int main(int argc, const char * argv[]) {
printf("%s\n",Resverse(str, "123456789"));
huiwen("123321");
count("1231112312312333123123", "123");
lstr(str,"123456789abcdefghijk");
printf("%s\n",str);
return 0;
}
![这里写图片描述](https://img-blog.csdn.net/20160614163934701)