xxxxx
daxi1987
全部博文(41)
2012年(2)
2011年(2)
2010年(3)
2009年(26)
2008年(8)
xgmiao
浪花小雨
blockgol
zj475967
cris_aut
ydong08
三角湖的
wjjLinux
L_502091
愚人陈
分类: C/C++
2009-03-31 22:03:15
#ifndef STRING_H_#define STRING_H_/* 求字符串长度 */size_t strlen(const char* strSrc){ if (strSrc == NULL) return 0; const char* p = strSrc; while (*p++ != '\0') ; return p-strSrc-1;}/* 字符串比较 相等返回0, 否则返回-1 */int strequal(const char* s1, const char* s2){ if (s1==NULL || s2==NULL) exit(1); if (s1 == s2) return 0; while ( *s1++ == *s2++ ) ; if ( (*s1 != '\0') || (*s2 != '\0') ) return -1; else return 0;}/* 字符串拷贝 */char* strcpy(char* strDest, const char* strSrc){ if (strDest==NULL || strSrc==NULL) return NULL; char* p = strDest;//important while ( (*p++ = *strSrc++) != '\0' ) ; return strDest;}/* 子串查找 */char* strstr(const char* str, const char* substr){ if ('\0' == substr) return (char*)str; const char* a = NULL; const char* b = substr; for (; *str != '\0'; ++str) { if (*str != *b) continue; a = str; while (1) { if (*b == '\0') return (char*)str; if (*a++ != *b++) break; } b = substr; } return NULL;}/* 字符串连接 */char* strncat(char* strDest, const char* strSrc, size_t n){ char* p = strDest; while (*p++ != '\0')//locate p at '\0' ; while (n-- && (*p++ = *strSrc++) ) ; *p = '\0'; return strDest;}char* strcat(char* strDest, const char* strSrc){ return strncat(strDest, strSrc, strlen(strSrc));}/* 字符串反转 */char* strrev(char* str){ char c; char* l = str; char* r = str; while (*r++ != '\0') ; r-=2; //end of str(not '\0') while (l < r) { c = *r; *r-- = *l; *l++ = c; } return str;}/* 以字节为单位进行内存拷贝 */void* memcpy(void* dest, const void* src, size_t nbytes){ if (dest==NULL || src==NULL) return NULL; void* tmp = dest; if ( (char*)src+nbytes > (char*)dest) { src += nbytes-1; dest += nbytes-1; while (nbytes-- > 0) *((char*)dest--) = *((char*)src--); } else { while (nbytes-- > 0) *((char*)dest++) = *((char*)src++); } return tmp;}#endif
上一篇:动态矩阵
下一篇:排序算法
登录 注册