(C) String array: Unterschied zwischen den Versionen
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( | + | 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; }