Need for help : Weird Serial.print and Array read problems

Dear All.
I have very basic sketch below :

#include<string.h>
//-------------VARS to SEND------------------------------
int sendvarlen = 6;
char* sendvarname[6]={"s0","s1","s2","s3","s4","s5"};
char* sendvarval[6]={"0","0","0","0","0","0"};
//-------------------------------------------------
long timetosend=millis();
void setup()
{
  Serial.begin(9600);
  delay(1000);
  Serial.println("I'm Here !!!");
  delay(1000);
}
void loop()
{
  if(millis() - timetosend > 1000)
  {
    readsensor();
    Serial.println("=============================");
    devdata();
    Serial.println("=============================");
    timetosend=millis();
  }
}

void readsensor()
{
  Serial.println("Analog Sensor Read results");
  char myread[10]="";
  for (int i = 0 ; i < sendvarlen ; i++)
  {
    memset(myread, '\0', 10);
    sendvarval[i]="";
    itoa(analogRead(i),myread,10);
    delay(50);
    strcpy(sendvarval[i],myread);
    
    Serial.print(sendvarname[i]);
    Serial.print("=");
    Serial.println(sendvarval[i]);
  }
}

void devdata()
{
  char mydata[500];
  strcpy(mydata, "My Sensordata is : ");
  for (int i=0; i<sendvarlen; i++)
  {
    strcat(mydata,sendvarname[i]);
    strcat(mydata,"=");
    strcat(mydata,sendvarval[i]);
    if (i < sendvarlen-1)
    {
      strcat(mydata,"&");
    }
  }
  Serial.print(mydata);
  Serial.println(" ");
}

And below is the results (dumped using) : tail -f /dev/ttyUSB1

Analog Sensor Read results

s0=198

s1=244

s2=351

s3=440

s4=412

s5=273

73

My Sensordata is : s0=273&s1=273&s2=273&s3=273&s4=273&s5=273 

73

Analog Sensor Read results

s0=191

s1=262

s2=378

s3=449

s4=381

s5=234

34

My Sensordata is : s0=234&s1=234&s2=234&s3=234&s4=234&s5=234 

34

Some weird thing from the results :

  1. There is no "=============================" printed out.
  2. all the "value" after "My Sensordata is" is just the last value got by readsensor()
  • 273 at the 1st result sequence , and
  • 234 at the 2st result sequence
  1. There is always 2 last character reprinted at the end of readsensor() and devdata()
  • 73 at the 1st result sequence , and
  • 34 at the 2st result sequence

Kindly please give me your enlightment to fix this problem.

My IDE version : 0022
My Board : Arduino 2009 , ATMega328.
My OS : Ubuntu (Jaunty)

Sincerely
-bino-

    strcpy(sendvarval[i],myread);

sendvarval[0] is a pointer. It points to space that is initialized to hold one character. You are copying more than one character to that location. Oops.

Try

char sendvarval[6][10];

instead.

When you write out of bounds, you are writing over some other memory locations. Potentially you are overwriting the first character of the "=========================" string with a NULL, so when you print that memory space, only the NULL is seen, so nothing gets printed.

PaulS ... you ARE the enlighter !!

-bino-