📄 substring.cpp
字号:
//---------------------------------------------------------------------------
//
// SubString.cpp: SubString Search Routines Implementation
//
//---------------------------------------------------------------------------
#include "StdAfx.h"
#include "SubString.h"
const char* szBaseString = "RightMark Memory Analyzer ";
const int BaseLength = strlen(szBaseString);
char szSubString[260];
void __cdecl GenerateSubString(DWORD len)
{
// copy whole strings
int i = 0;
int l = int(len);
while (l > BaseLength)
{
strncpy(&szSubString[i], szBaseString, BaseLength);
i += BaseLength;
l -= BaseLength;
}
// copy last bytes
strncpy(&szSubString[i], szBaseString, l);
// make the string null-terminated
szSubString[len] = '\0';
}
char* __cdecl StrNStr(const char* Str, const char* SubStr, DWORD maxLen)
{
for (char* start = (char *)Str; DWORD(start) < DWORD(Str) + maxLen; ++start)
{
// find start of pattern in string
if (*start == *SubStr)
{
char* pptr = (char *)SubStr;
char* sptr = start;
while (*sptr++ == *pptr++)
{
// if end of pattern then pattern was found
if ('\0' == *pptr)
return start;
}
}
if (*start == '\0')
{
break;
}
}
return NULL;
}
inline char ToUpper(char c)
{
return ((c > char(0x60)) && (c < char(0x7b))) ? (c - 0x20) : c;
}
char* __cdecl StrNIStr(const char* Str, const char* SubStr, DWORD maxLen)
{
for (char* start = (char *)Str; DWORD(start) < DWORD(Str) + maxLen; ++start)
{
// find start of pattern in string
if (ToUpper(*start) == ToUpper(*SubStr))
{
char* pptr = (char *)SubStr;
char* sptr = start;
while (ToUpper(*sptr++) == ToUpper(*pptr++))
{
// if end of pattern then pattern was found
if ('\0' == *pptr)
return start;
}
}
if (*start == '\0')
{
break;
}
}
return NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -