......
// 打开.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;