字符串 - 单字、双字查找第一个、最后一个出现
#include "stdafx.h" #include <windows.h> #include <iostream> #include <shlwapi.h> #pragma comment(lib,"Shlwapi.lib") #include <atlstr.h> //#include <cstring> using namespace std; VOID Sub_1();//双字查找最后一个出现 wcsrchr BOOL Sub_2();//单字查找第一个出现 StrStrIW BOOL Sub_2_1();//单字查找第一个出现 StrStrIA VOID Sub_3();//双字查找从最后一个查找 wcscat VOID Sub_3_1();//wcsstr //wcsstr(BufferData, L".") wcsstr VOID Sub_4();//CString 双字查找从最后查找 CString ReverseFind VOID Sub_5();//双字查找从最后一个开始找wcsrchr VOID Sub_6();//单字查找从最后一个开始找 strrchr strrchr(BufferData, '\\') VOID Sub_7();//单字查找从第一个开始找 strstr strstr(BufferData, ".") VOID Sub_8();//单字查找从第一个开始找 strchr strchr(BufferData,'.') #pragma warning(disable:4996) int main() { //Sub_1(); //双字查找最后一个出现 //Sub_2(); Sub_2_1();//单字查找第一个出现 StrStrIA //Sub_3(); //双字查找第一个出现 //Sub_3_1(); //Sub_4(); //Sub_6(); //Sub_7(); //Sub_8(); return 0; } VOID Sub_1()//双字查找最后一个出现 wcsrchr { WCHAR Sour[1024] = L"c:\\1\\1\\1.txt"; WCHAR* FindPoint = NULL; printf("Sour:%S\r\n", Sour); //WCHAR wzDest[1024] = L"D:"; FindPoint = wcsrchr(Sour, '\\');//wcsrchr是一种函数,功能是从一个字符串中寻找某个字符最后出现的位置。 if (FindPoint != NULL) { *FindPoint = '\0'; // wcscpy(wzDest, wzSour); //双字拷贝 wcscat(Sour, L"\\2.dll");//双字连接 *FindPoint = '\\'; } printf("Dest:%S\r\n", Sour); //printf("Sour:%S\r\n", wzSour); // printf("Dest:%S\r\n", wzDest); } BOOL Sub_2()//双字查找第一个出现 StrStrIW { WCHAR wzSour[1024] = L"C:\\windows\\system32\\notepad.exe"; WCHAR* FindPoint = NULL; WCHAR v1[1024] = L"Notepad.exe"; FindPoint = StrStrIW(wzSour, v1); if (FindPoint != NULL) { return TRUE; } return FALSE; } BOOL Sub_2_1()//单字查找第一个出现 StrStrIA { CHAR szSour[1024] = "C:\\windows\\system32\\notepad.exe"; CHAR* FindPoint = NULL; CHAR v1[1024] = "Notepad.exe"; FindPoint = StrStrIA(szSour, v1); if (FindPoint != NULL) { return TRUE; } return FALSE; } VOID Sub_3() //双字查找从最后一个查找 wcscat { WCHAR Sour[1024] = L"C:\\windows\\system32\\notepad.exe"; WCHAR* FindPoint = NULL; WCHAR Dest[1024] = L"D:"; FindPoint = wcsstr(Sour, L"\\");//wcsrchr是一种函数,即Scan a string for the last occurrence of a character,功能是从一个字符串中寻找某个字符最后出现的位置。 if (FindPoint != NULL) { wcscat_s(Dest, FindPoint); /*功能:把strSource所指字符串添加到strDestination结尾处,覆盖 strDestination结尾处的'\0'并添加'\0'。 说明:strSource和strDestination所指内存区域不可以重叠且strDestination 必须有足够的空间来容纳strSource的字符串。 备注 : 因为wcscat在strDestination追加strSource前不进行检查,这是一个 缓冲区溢出的潜在原因。故使用时应注意。推荐使用wcscat_s替代.*/ } printf("Sour:%S\r\n", Sour); printf("Dest:%S\r\n", Dest); } VOID Sub_3_1() //wcsstr(BufferData, L".") wcsstr { WCHAR BufferData[MAX_PATH] = L"C:\\1.txt"; WCHAR* FindPoint = NULL; FindPoint = wcsstr(BufferData, L".");//单字查找 if (FindPoint != NULL) { *FindPoint = '\0'; wcscat(FindPoint, L".dll");//双字连接 } printf("%S", BufferData); } VOID Sub_4() //CString 双字查找从最后查找 CString ReverseFind { WCHAR v1[MAX_PATH] = L"C:\\1\\1\\1.txt"; WCHAR* FindPoint = NULL; CString v2 = v1; int iPos = v2.ReverseFind('\\');//5 CString v3 = v2.Left(iPos + 1); v3 += L"1.dll"; printf("%S", v3.GetBuffer()); } VOID Sub_5()//双字查找从最后一个开始找wcsrchr { WCHAR BufferData[1024] = L"c:\\UMS\\UMS\\UMS.txt"; WCHAR* v1 = NULL; printf("%S\r\n", BufferData); v1 = wcsrchr(BufferData, '\\');//wcsrchr是一种函数,功能是从一个字符串中寻找某个字符最后出现的位置。 if (v1 != NULL) { *v1 = '\0'; wcscat(BufferData, L"\\HelloWorld.dll");//双字连接 } printf("%S\r\n", BufferData); printf("Input AnyKey To Exit\r\n"); getchar(); } VOID Sub_6()//单字查找从最后一个开始找 strrchr strrchr(BufferData, '\\') { char BufferData[1024] = "c:\\Shine\\Shine\\Shine.txt"; char* v1 = NULL; printf("%s\r\n", BufferData); v1 = strrchr(BufferData, '\\');//strrchr是一种函数,功能是从一个字符串中寻找某个字符最后出现的位置。 if (v1 != NULL) { *v1 = '\0'; strcat_s(BufferData, "\\HelloWorld.dll");//单字连接 } printf("%s\r\n", BufferData); printf("Input AnyKey To Exit\r\n"); getchar(); } VOID Sub_7()//单字查找从第一个开始找 strstr strstr(BufferData, ".") { /* strstr 编辑 strstr(str1, str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。*/ char BufferData[1024] = "c:\\Shine\\Shine\\Shine.txt"; char* v1 = NULL; printf("%s\r\n", BufferData); v1 = strstr(BufferData, ".");//strstr是一种函数,功能是从一个字符串中寻找某个字符最后出现的位置。 if (v1 != NULL) { *v1 = '\0'; strcat_s(BufferData, "\\HelloWorld.dll");//单字连接 } printf("%s\r\n", BufferData); printf("Input AnyKey To Next\r\n"); getchar(); } VOID Sub_8()//单字查找从第一个开始找 strchr strchr(BufferData,'.') { char BufferData[1024] = "c:\\UMS\\UMS\\UMS.txt"; char* v1 = NULL; printf("%s\r\n", BufferData); v1 = strchr(BufferData,'.');//strchr是一种函数,功能是从一个字符串中寻找某个字符最后出现的位置。strchr函数原型:extern char *strchr(const char *s,char c);查找字符串s中首次出现字符c的位置。 if (v1 != NULL) { *v1 = '\0'; strcat_s(BufferData, "\\HelloWorld.dll");//单字连接 } printf("%s\r\n", BufferData); printf("Input AnyKey To Exit\r\n"); getchar(); }
整理了一些WCHAR、CHAR的从头、尾查找第一次出现函数。