(C) String array: Unterschied zwischen den Versionen

Aus TippvomTibb
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Allgemeines= String in einem Array ist in C immer wieder ein Fallstrick, zumindest bei mir. Ich benutze in meinen Prograemmchen schon mal ein String-Array um…“)
 
Zeile 13: Zeile 13:
 
     //MQTTClient.publish(outRawTopic.c_str(), payloadStr.c_str());
 
     //MQTTClient.publish(outRawTopic.c_str(), payloadStr.c_str());
  
     for(uint8_t i=0;sizeof(directions1);i++){
+
     for(uint8_t i=0;sizeof(directions1[0]);i++){
 
       if (strcmp(payloadStr.c_str(),*(directions1+i))==0)direction=1;
 
       if (strcmp(payloadStr.c_str(),*(directions1+i))==0)direction=1;
 
     }
 
     }
     for(uint8_t i=0;sizeof(directions2);i++){
+
     for(uint8_t i=0;sizeof(directions2[0]);i++){
 
       if (strcmp(payloadStr.c_str(),*(directions2+i))==0)direction=2;
 
       if (strcmp(payloadStr.c_str(),*(directions2+i))==0)direction=2;
 
     }
 
     }
     for(uint8_t i=0;sizeof(directions2);i++){
+
     for(uint8_t i=0;sizeof(directions3[0]);i++){
 
       if (strcmp(payloadStr.c_str(),*(directions3+i))==0)direction=3;
 
       if (strcmp(payloadStr.c_str(),*(directions3+i))==0)direction=3;
 
     }
 
     }

Version vom 12. August 2022, 12:56 Uhr

Allgemeines

String in einem Array ist in C immer wieder ein Fallstrick, zumindest bei mir.

Ich benutze in meinen Prograemmchen schon mal ein String-Array um Strings zu vergleichen. Das sieht z.B. dann so aus.

    uint8_t direction=0; // 1 means down, out; 2 means up, in
    const char directions1[3][6]={"down","out","on"};
    const char directions2[3][6]={"up","in","off"};
    const char directions3[3][6]={"halt","stop","stopp"};
    payloadStr.toLowerCase();
    //MQTTClient.publish(outRawTopic.c_str(), payloadStr.c_str());

    for(uint8_t i=0;sizeof(directions1[0]);i++){
      if (strcmp(payloadStr.c_str(),*(directions1+i))==0)direction=1;
    }
    for(uint8_t i=0;sizeof(directions2[0]);i++){
      if (strcmp(payloadStr.c_str(),*(directions2+i))==0)direction=2;
    }
    for(uint8_t i=0;sizeof(directions3[0]);i++){
      if (strcmp(payloadStr.c_str(),*(directions3+i))==0)direction=3;
    }

Quelle

gute Quelle