C++ 使用char数列保存每一个字母时,如何检测是否存在特定单词

    ......

    // 打开.txt, 读取每一个数据(用空格分隔)并写入数组
    readTaskList.open(tempFilePath,ios::binary);
    char* s = new char[length];
    int i = 0;
    while (!readTaskList.eof())
    {
        readTaskList >> s[i];
        i++;
    }

    // 检验是否存在连续的字符"WeChat"(不区分大小写)
    for (int i = 0; i <= length; i++)
    {
        if (s[i] == 'W' || 'w')        //这是第66行
        {
            if (s[i + 1] == 'W' || 'e')
            {
                if (s[i + 2] == 'C' || 'c')
                {
                    if (s[i + 3] == 'H' || 'h')
                    {
                        if (s[i + 4] == 'A' || 'a')
                        {
                            if (s[i + 5] == 'T' || 't')
                            {
                                cout << "Found WeChat" << endl;
                                goto End_Circulation;
                            }
                        }
                    }
                }
            }
        }
    }

    End_Circulation:
    ......

从“s”中读取的数据无效: 可读大小为“length*1”个字节,但可能读取了“2”个字节:Line 59
使用未初始化的内存“*s”:Line 66
(<表达式> || <非零常量>)始终为非零常量:Line 66, 68, 70, 72, 74, 76

这一段代码报了8个警告,写入数组部分没问题(每一字节对应数组内一个元素,VS2019的监视面板可以看到整合后的数组除没有空格外一切显示正常),但后面的检测部分没有用处。(记事本都找不到这样连续的字符串它居然能找到)

另外,怎么让它将空格也能按照个数插入数组中?

使用字符串分割,然后在判断每个字符串中是否与目标字符串相等

将取来字符串,拷贝一份转为全小写或全大写,利用strstr函数

用“||”分开的应该是两个表达式,上面的用二进制打开就没有你说的59行那个问题
但是这个时候如果是汉字,会写入两个元素

    readTaskList.open(tempFilePath,ios::binary);
    char* s = new char[length];
    int i = 0;
    while (!readTaskList.eof())
    {
        readTaskList >> s[i];
        i++;
    }

    // 检验是否存在连续的字符"WeChat"(不区分大小写)
    for (int i = 0; i <= length; i++)
    {
        if (s[i] == 'W' || s[i] == 'w')
        {
            if (s[i + 1] == 'E' || s[i + 1] == 'e')
            {
                if (s[i + 2] == 'C' || s[i + 2] == 'c')
                {
                    if (s[i + 3] == 'H' || s[i + 3] == 'h')
                    {
                        if (s[i + 4] == 'A' || s[i + 4] == 'a')
                        {
                            if (s[i + 5] == 'T' || s[i + 5] == 't')
                            {
                                cout << "微信正在运行" << endl;
                                system("pause");
                                return 0;
                            }
                        }
                    }
                }
            }
        }
    }
    cout << "微信暂未运行" << endl;
    system("pause");
    return 0;