部分字符串的实现函数
2012-04-07 22:24
375 查看
一些字符串的实现函数,没有经过测试,可能有些函数还存在一些错误,有时间再改。
/***************************************************** * 函数说明: * 进行字符串拷贝 * 函数参数: * const char *src -源字符串 * char *dest -目标字符串 * 返回值: * 返回目标字符串的地址 *****************************************************/ char *strcpy_yl(const char *src,char *dest) { assert(src!=NULL && dest!=NULL); int len=strlen(src); char *address=dest; if (dest<(src+len)) { char *psrc=src+len-1; char *pdest=dest+len-1; while(len--) { *pdest-- = *psrc--; } *(dest+len)='\0'; return address; } else { while(len--) { *dest++ = *src++; } *dest='\0'; return address; } } /******************************************************* * 函数说明: * 寻找字符串中目标字符第一次出现的位置 * 函数参数: * const char *str -字符串 * char c -目标字符 * 返回值: * 如果存在,返回目标字符的位置;不存在则返回-1 *********************************************************/ int strchr_yl(const char *str,char c) { assert(str!=NULL); size_t len=strlen(str); int i; for (i=0;i<len;i++) { if (str[i]==c) { return i; } } return -1; } /************************************************************* * 函数说明: * 对两个字符串进行比较 * 函数参数: * const char *str1 -待比较的字符串1 * const char *str2 -待比较的字符串2 * 返回值: * 如果字符串1大于字符串2,则返回1;如果字符串1等于字符串2,则返回0;否则返回-1 ***************************************************************/ int strcmp_yl(const char *str1,const char *str2) { assert(str1!=NULL && str2!=NULL); while(*str1 && *str2 && *str1==*str2) { str1++; str2++; } return (*str1-*str2>0)? 1: (*str1-*str2==0)? 0: -1; } /************************************************************* * 函数说明: * 字符串连接 * 函数参数: * const char *src -源字符串 * char *dest -目标字符串 * 返回值: * 返回字符串连接后的字符串的指针 ***************************************************************/ char *strcat_yl(const char *src,char *dest) { assert(src!=NULL && dest!=NULL); char *pdest=dest; while(dest!='\0') { dest++; } while((*dest++=*src++)!='\0'); return pdest; } /**************************************************************** * 函数说明: * 求字符串的长度 * 函数参数: * const char *str -待求的字符串 * 返回值: * 返回字符串的长度 ****************************************************************/ size_t strlen_yl(const char *str) { assert(str!=NULL); size_t len=0; while(*str!='\0') { len++; str++; } return len; } /************************************************************* * 函数说明: * 将src所指向的count个字节复制到dest指向的内存块 * 函数参数: * void *dest -目标指针 * const void *src -源指针 * size_t count -要复制的字节数 * 返回值: * 返回目标地址 **************************************************************/ void *memcpy_yl(void *dest,const void *src,size_t count) { assert(dest!=NULL && src!=NULL); void *pdest=dest; while(count--) { *(char *)dest=*(char *)src; src=(char *)src+1; dest=(char *)dest+1; } return pdest; } /************************************************************ * 函数说明: * 将字符串转换为整型 * 函数参数: * string str -待转换的字符串 * 返回值: * 返回转换后的整型 *************************************************************/ int str2int_yl(string str) { assert(str.length()>0); int pos=0; int sign=1; if (str[pos]=='+') { pos++; } else if (str[pos]=='-') { sign=-1; pos++; } int num=0; while(pos<str.length()) { assert(str[pos]>='0' && str[pos]<='9'); num=10*num+(str[pos]-'0'); assert(num>=0); pos++; } num=num*sign; return num; } /******************************************************* * 函数说明: * 找字符串中第一个只出现一次的字符串 * 函数参数: * const char *str -待求的字符串 * 返回值: * 返回找到的字符串,如果不存在则返回字符'\0' *******************************************************/ char FindNotRepeatChar(const char *str) { if (str==NULL) { return '\0'; } const int SIZE=256; int table[SIZE]={0}; char pstr=str; while(*pstr!='\0') { table[*pstr]++; pstr++; } while(*str!='\0') { if (table[*str]==1) { return *str; } str++; } return '\0'; } /****************************************************************** * 函数说明: * 字符串中寻找子串 * 函数参数: * const char *string -待求字符串 * const char *substring -子串 * 返回值: * 返回子串的位置 ********************************************************************/ int strstr_yl(const char *string,const char substring) { assert(string!=NULL && substring!=NULL); size_t len1=strlen(string); size_t len2=strlen(substring); int i,j=0; for (i=0;i<len2;i++) { if (string[j]!=substring[i]) { j++; i=0; } else { j++; } if (j>len1-len2) { return -1; } } if (i==len2) { return j-len2; } }
相关文章推荐
- asp下实现截取字符串特定部分内容函数
- 字符串部分函数的实现
- 习题8-5 使用函数实现字符串部分复制
- 字符串部分操作的函数实现
- 新手上路系列5:部分字符串使用函数的程序实现
- 字符串部分函数的实现
- asp下实现截取字符串特定部分内容函数
- 6-1 使用函数实现字符串部分复制(20 分)
- 6-1 使用函数实现字符串部分复制(20 分)
- C语言中字符串处理函数实现(部分)
- 习题8-5 使用函数实现字符串部分复制(20 分)
- linux c语言字符串函数replace,indexOf,substring等的实现
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 编写一个函数reverse_string(char * string)(递归实现),反向排列字符串
- 利用C++模板,代替虚函数,实现类的静态多态性(加入性能测试部分)
- C++语言中用程序实现读入一个包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分
- 自定义函数实现字符串转成整数,参照系统函数atoi
- 实现字符串的长度检测strlen函数
- jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后 //获取焦点后光标在字符串后 //其原理就是获得焦点后重新把自己复制粘帖一下 var t=$("#"+id).val()