字符串操作
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; }
相关文章推荐
- C#实现回文检测的方法
- 深入分析C中不安全的sprintf与strcpy
- C语言中的sizeof操作符用法及和strlen的区别
- C++不使用变量求字符串长度strlen函数的实现方法
- C语言解字符串逆序和单向链表逆序问题的代码示例
- c#二进制逆序方法详解
- C语言中sizeof()与strlen()函数的使用入门及对比
- C语言中的strdup()函数和其与strcpy()函数的区别
- PHP输出两个数字中间有多少个回文数的方法
- 基于Sizeof与Strlen的区别以及联系的使用详解
- PHP字符串长度计算 - strlen()函数使用介绍
- php strlen mb_strlen计算中英文混排字符串长度
- 字符串长度函数strlen和mb_strlen的区别示例介绍
- 详解C语言中strcpy()函数与strncpy()函数的使用
- C语言中关于sizeof 和 strlen的区别分析
- C++求逆序对的方法
- 简单谈谈PHP中strlen 函数
- 浅析PHP中strlen和mb_strlen的区别
- PHP中strlen()和mb_strlen()的区别浅析
- PHP判断一个字符串是否是回文字符串的方法