您的位置:首页 > 其它

字符串操作

2016-06-13 21:58 295 查看
strlen:
//不包含'\0'
//unsigned long Strlen(const char *str)
//{
//    unsigned long length=0;
//    while (*str++!='\0') {
//       length++;
//    }
//    return length;
//}
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;
//    while ((*str++ = *str2++) != '\0');
//    return str1;
//}
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);
//    while ((*str++ = *str2++) != '\0');
//    return str1;
//}
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[]) {
//Reverse
printf("%s\n",Resverse(str, "123456789"));

huiwen("123321");

count("1231112312312333123123", "123");

lstr(str,"123456789abcdefghijk");
printf("%s\n",str);

return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息