我试图比较EEPROM存储的返回字符串的SSID与WiFi.SSID()函数.
虽然在串行监视器中它实际上是相同的,但我没有得到匹配,它永远不会达到if声明.
我尝试使用==不带.str()和使用的运算符if( strcmp ( a.c_str(),b.c_str)==1)
似乎没什么用.我在这里错过了什么?
void ConnectToBestWifi()
{
int apnos = WiFi.scanNetworks();
int loc[3];
int no=0;
for(int i=0;i<apnos;i++)
{
for(int j=0;j<3;j++)
{
Serial.println("");
Serial.println("Wifi SSID");
Serial.println(WiFi.SSID(i).c_str());
Serial.println("");
Serial.println("Read SSID");
Serial.println(ReadWifiSSID(j).c_str());
Serial.println("");
if (strcmp(((WiFi.SSID(i)).c_str()),((ReadWifiSSID(j)).c_str()))==1)
{
Serial.println("gotcha");
loc [no]=i;
no++;
}
}
Run Code Online (Sandbox Code Playgroud)
下面附带串行监视器的图像

阅读手册页,再一次.
另外,引用C11,章节§7.24.4.2,(强调我的)
Run Code Online (Sandbox Code Playgroud)int strcmp(const char *s1, const char *s2);该
strcmp函数返回一个整数大于,等于,或小于零,相应地作为指向的字符串s1是大于,等于,或小于该字符串通过指向s2.
strcmp()0当两个字符串匹配时返回a .所以,
if (strcmp(((WiFi.SSID(i)).c_str()),((ReadWifiSSID(j)).c_str()))==1)
Run Code Online (Sandbox Code Playgroud)
应该更好
if (strcmp (((WiFi.SSID(i)).c_str()),((ReadWifiSSID(j)).c_str())) == 0)
Run Code Online (Sandbox Code Playgroud)