📄 mbsstr.c
字号:
/***
* mbsstr.c - Search for one MBCS string inside another
*
* Copyright (c) 1988-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
* Search for one MBCS string inside another
*
*******************************************************************************/
#ifdef _MBCS
#include <cruntime.h>
#include <mbdata.h>
#include <mbctype.h>
#include <mbstring.h>
#include <stddef.h>
#include <string.h>
#define _BYTELEN(s) (strlen(s))
#define _MBSINC(s) (_mbsinc(s))
#define PCHAR char *
/***
* _mbsstr - Search for one MBCS string inside another
*
*Purpose:
* Find the first occurrence of str2 in str1.
*
*Entry:
* unsigned char *str1 = beginning of string
* unsigned char *str2 = string to search for
*
*Exit:
* Returns a pointer to the first occurrence of str2 in
* str1, or NULL if str2 does not occur in str1
*
*Exceptions:
*
*******************************************************************************/
unsigned char * __cdecl _mbsstr(
const unsigned char *str1,
const unsigned char *str2
)
{
unsigned char *cp, *s1, *s2, *endp;
if ( _ISNOTMBCP )
return strstr(str1, str2);
cp = (unsigned char *) str1;
endp = (unsigned PCHAR) (str1 + (_BYTELEN(str1) - _BYTELEN(str2)));
while (*cp && (cp <= endp))
{
s1 = cp;
s2 = (PCHAR) str2;
/*
* MBCS: ok to ++ since doing equality comparison.
* [This depends on MBCS strings being "legal".]
*/
while ( *s1 && *s2 && (*s1 == *s2) )
s1++, s2++;
if (!(*s2))
return(cp); /* success! */
/*
* bump pointer to next char
*/
cp = _MBSINC(cp);
}
return(NULL);
}
#endif /* _MBCS */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -