From 5dd6847bfe1da1ace3afd5de757bc8f2c913a221 Mon Sep 17 00:00:00 2001 From: vxunderground <57078196+vxunderground@users.noreply.github.com> Date: Thu, 14 Jul 2022 22:27:11 -0500 Subject: [PATCH] Create StringFindSubstring.cpp --- String Manipulation/StringFindSubstring.cpp | 64 +++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 String Manipulation/StringFindSubstring.cpp diff --git a/String Manipulation/StringFindSubstring.cpp b/String Manipulation/StringFindSubstring.cpp new file mode 100644 index 0000000..8f3fcb8 --- /dev/null +++ b/String Manipulation/StringFindSubstring.cpp @@ -0,0 +1,64 @@ +INT StringCompareStringRegionA(PCHAR String1, PCHAR String2, SIZE_T Count) +{ + UCHAR Block1, Block2; + while (Count-- > 0) + { + Block1 = (UCHAR)*String1++; + Block2 = (UCHAR)*String2++; + + if (Block1 != Block2) + return Block1 - Block2; + + if (Block1 == '\0') + return 0; + } + + return 0; +} + +INT StringCompareStringRegionW(PWCHAR String1, PWCHAR String2, SIZE_T Count) +{ + UCHAR Block1, Block2; + while (Count-- > 0) + { + Block1 = (UCHAR)*String1++; + Block2 = (UCHAR)*String2++; + + if (Block1 != Block2) + return Block1 - Block2; + + if (Block1 == '\0') + return 0; + } + + return 0; +} + + +PCHAR StringFindSubstringA(PCHAR String1, PCHAR String2) +{ + PCHAR pPointer = String1; + DWORD Length = (DWORD)StringLengthA(String2); + + for (; (pPointer = StringLocateCharA(pPointer, *String2)) != 0; pPointer++) + { + if (StringCompareStringRegionA(pPointer, String2, Length) == 0) + return (PCHAR)pPointer; + } + + return NULL; +} + +PWCHAR StringFindSubstringW(PWCHAR String1, PWCHAR String2) +{ + PWCHAR pPointer = String1; + DWORD Length = (DWORD)StringLengthW(String2); + + for (; (pPointer = StringLocateCharW(pPointer, *String2)) != 0; pPointer++) + { + if (StringCompareStringRegionW(pPointer, String2, Length) == 0) + return (PWCHAR)pPointer; + } + + return NULL; +}