字符串 - 单字、双字查找第一个、最后一个出现

#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的从头、尾查找第一次出现函数。

posted on 2017-08-18 20:14  czhang4  阅读(672)  评论(0编辑  收藏  举报