String comparison problem.

Hi.

I will explain what I'm trying to do.

I have 2 strings, one of them is called address and is static the other one is called receiver and will hold the last 5 characters received by the serial Rx of my 328P.

When they are equal a text sent through the serial port should indicate so.

#define pin2 0 
#define pin3 1 //SERIAL
#define pin4 2 //SERIAL
#define pin5 3 //PWM
#define pin6 4
#define pin11 5 //PWM
#define pin12 6 //PWM
#define pin13 7
#define pin14 8
#define pin15 9 //PWM
#define pin16 10 //PWM
#define pin17 11 //PWM
#define pin18 12
#define pin19 13
#define pin23 A0 //analog
#define pin24 A1 //analog
#define pin25 A2 //analog
#define pin26 A3 //analog
#define pin27 A4 //analog
#define pin28 A5 //analog
#define TRUE 1
#define FALSE 0
char receiver[] = "00000";//goes from receiver[0]  to  receiver receiver[4]
char address[] = "00001";
char buffer;
int i;
void setup(){ 
  Serial.begin(9600);
  Serial.println("Initialized");
}

void loop(){
   if(Serial.available() > 0){
   buffer = Serial.read();
   receiver[i] = buffer;
   i++;
   if(receiver[4] != 48){//48 = number 0 character os ascii table
     i = 0;
     if(receiver == address){//the problem is here, even if both strings have the same value it will not execute what is in this operator.
       Serial.println("they are equal!");
     }
   }
 }
  delay(500);
  Serial.print("Receiver: ");
  Serial.println(receiver);
  Serial.print("Address:  ");
  Serial.println(address);
}

check out strcmp.

It worked perfectly.

Thank you. :slight_smile:

   if(receiver[4] != 48){//48 = number 0 character os ascii table

So, why not make life easy for yourself?

   if(receiver[4] != '0')
   {

No need to consult the ASCII table at all.