Ako porovnať v programe dva znaky

Sekcia určená pre Arduino nadšencov

Moderátor: Moderátori

boro
Stály člen
Stály člen
Príspevky: 118
Dátum registrácie: 10 Nov 2010, 00:00
Vek: 80

Ako porovnať v programe dva znaky

Príspevok od používateľa boro » 03 Apr 2018, 17:24

Ahojte,experimentujem s prenosom na 433MHz,prenos funguje.Potrebujem porovnať dva znaky či sú zhodné,alebo nie.Na Rx strane mám príkaz :Serial.println(msg);Ak vyšlem char *msg="A",tak napíše: A.Ale príkaz: if(msg="A"){digitalWrite(3,LOW);} je ignorovaný,nenašla sa zhoda.Prosím o radu ako napísať príkaz if,aby to korektne porovnalo.
Ďkujem predom za radu Boro
0

Cofi
Nový člen
Nový člen
Príspevky: 74
Dátum registrácie: 25 Jan 2010, 00:00
Vek: 43

Re: Ako porovnať v programe dva znaky

Príspevok od používateľa Cofi » 03 Apr 2018, 17:40

nemas mat v porovnavacej rutine == ?
0

dhaman
Nový člen
Nový člen
Príspevky: 56
Dátum registrácie: 09 Máj 2012, 08:00
Bydlisko: Banska Bystrica
Vek: 44
Kontaktovať používateľa:

Re: Ako porovnať v programe dva znaky

Príspevok od používateľa dhaman » 03 Apr 2018, 17:46

ako napisal cofi ==
if(msg == "A"){digitalWrite(3,LOW);}
0
Hej ty - robota...!!! Mňa sa neboj, ja sa ťa ani nedotknem!
MPD linux -> Customworks DAC1-> HYPA 10 -> B&W 801 80 series
Pro-Ject RPM 6.1 -> Transrotor MM ucello -> Actidamp MK3

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 988
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: Ako porovnať v programe dva znaky

Príspevok od používateľa budvar10 » 03 Apr 2018, 17:52

Musíš použiť strcmp funkciu.
Reťazec sa takto porovnávať nedá:

Kód: Vybrať všetko

if(msg == "A") { }
.
Buď porovnáš jeden znak:

Kód: Vybrať všetko

if(*msg == 'A') { }
,
alebo si pozri strcmp
https://www.nongnu.org/avr-libc/user-ma ... f379fc33ba.
0

boro
Stály člen
Stály člen
Príspevky: 118
Dátum registrácie: 10 Nov 2010, 00:00
Vek: 80

Re: Ako porovnať v programe dva znaky

Príspevok od používateľa boro » 03 Apr 2018, 18:02

Ahojte,samozrejme v príkaze if je ==.
Ď :wink:
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: Ako porovnať v programe dva znaky

Príspevok od používateľa peterple » 03 Apr 2018, 20:37

Tak len pre poriadok. Porovnanie pomocou == je možné použiť len pre arduino a to pre objekty typu String. Pre klasické C reťazce typu char [], teda polia znakov sa to použiť nedá. Vtedy treba použiť reťazcové funkcie ako písal budvar. V konečnom dôsledku aj tak je použitá funkcia strcmp len je tam využitý C++ fičúra- preťaženie operátorov.
Kedže v otázke je typ premennej/objektu msg zamlčaný tak autor zrejme ani netuší čo tu píšem.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 988
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: Ako porovnať v programe dva znaky

Príspevok od používateľa budvar10 » 03 Apr 2018, 20:43

boro napísal:...Ak vyšlem char *msg="A"...
0

boro
Stály člen
Stály člen
Príspevky: 118
Dátum registrácie: 10 Nov 2010, 00:00
Vek: 80

Re: Ako porovnať v programe dva znaky

Príspevok od používateľa boro » 04 Apr 2018, 08:04

Použil som funkciu strcmp nasledovne: int a=int strcmp(const char* "A",const char* msg)_ATTR_PURE_; a po verify vypíše: expected primary-expression before "int"
Neviem čo ešte vyžaduje,opäť prosím o pomoc.Ďakujem
0

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 988
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: Ako porovnať v programe dva znaky

Príspevok od používateľa budvar10 » 04 Apr 2018, 08:50

Je problém poslať kód? Ten popis sa mi zdá nezrozumiteľný.
Ak, tak nejako takto:

Kód: Vybrať všetko

int a= strcmp("A", msg);
Treba si niečo naštudovať o C/C++, aspoň základy.
0

boro
Stály člen
Stály člen
Príspevky: 118
Dátum registrácie: 10 Nov 2010, 00:00
Vek: 80

Re: Ako porovnať v programe dva znaky

Príspevok od používateľa boro » 04 Apr 2018, 10:46

Budvar10,ďakujem pekne, už to funguje.Použil som príkaz int a=strcmp("A",msg); ako ste mi poradili.Heureka!!!!!!!! :) :potlesk: :D
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok