int Strrchr(char *s,char ch)//从字符串后面查找字符
{
int len=strlen(s)-1;
while(s[len])
if (s[len--]==ch)
return ++len;
return -1;
{
int len=strlen(s)-1;
while(s[len])
if (s[len--]==ch)
return ++len;
return -1;
}
int strstr1(const char* src, const char* sub)//字符串匹配
{
assert(src!=NULL && sub!=NULL);
int len1=strlen(src);
int len2=strlen(sub);
int i=0,j=1;
while(i<=len1&&j<=len2)
{
if (src[i] == sub[j-1])
{
++i;
++j;
}
else
{
i=i-j+2;
j=1;
}
}
if (j>len2)
{
return i-len2;
}
else
return -1;
}
typedef unsigned char BYTE1;
void *memcpy(void * dest, const void *src, unsigned int size)//拷贝内存
{
assert(dest!=NULL && src!=NULL);
assert(dest+size<=src || dest>=src+size);
BYTE1 *p = (BYTE1*)dest;
const BYTE1 *q=(BYTE1*)src;
while(size--)
{
*p++ = *q++;
}
return dest;
}
void * memmove ( void * dst, const void * src, unsigned int count) |
| { |
176 | void * ret = dst; |
177 | if (dst <= src || ( char *)dst >= (( char *)src + count)) |
178 | { |
179 | while (count--) |
180 | { |
181 | *( char *)dst = *( char *)src; |
182 | dst = ( char *)dst + 1; |
183 | src = ( char *)src + 1; |
184 | } |
185 | } |
186 | else |
187 | { |
188 | dst = ( char *)dst + count - 1; |
189 | src = ( char *)src + count - 1; |
190 | while (count--) |
191 | { |
192 | *( char *)dst = *( char *)src; |
193 | dst = ( char *)dst - 1; |
194 | src = ( char *)src - 1; |
195 | } |
196 | } |
197 | return (ret); |
198 | |