strcmp is not working in KDS

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

strcmp is not working in KDS

Jump to solution
1,457 Views
kayathrim
Contributor I

Hi all,

I am using KDS3.0 without Processor Expert and SDK in K22 family.

In this strcmp is not returning proper value even source destination strings are same.

What is the problem?

Regards,

Kayathri

Labels (1)
Tags (1)
0 Kudos
Reply
1 Solution
1,194 Views
BlackNight
NXP Employee
NXP Employee

Hi Kayathri,

you have a few problems (or bugs, actually) in your code:

- you are using three large arrays (3x256 bytes) local to your function. If you have not allocated enough stack, this will be a problem.

- you are defining f_check[] twice.

- but the real problem is: strcmp() compares the strings up to a zero terminating byte. You don't have that as you initialize the buffers with a pattern, but you don't set the terminating character. I suggest you either fix that, or you are using strncmp() instead.

I hope this makes the problem clear and helps,

Erich

View solution in original post

0 Kudos
Reply
3 Replies
1,194 Views
BlackNight
NXP Employee
NXP Employee

Hi Kayathri,

can you provide an example of what you are doing?

And: have you included the header already, like with

#include <string.h>

?

I hope this helps,

Erich

0 Kudos
Reply
1,194 Views
kayathrim
Contributor I

Hi Erich,

i have included  <string.h>

below are my function

//strcmp test

char f_check[256];

char buf_data[256];

  int true1=0;

  int false1=0;

  int i = 5; //assigned simply to chech the strcmp return value

  char f_check[256];

  memset(f_check,0x41,sizeof(f_check));

  memset(buf_data,0x41,sizeof(buf_data));

// upto here i vaue is 5

  i = strcmp(f_check,buf_data);

// now i =5

  if(i==0)

  {

  true1++;

  }

  else

  {

control comes here

false1++;

  }

Regards,

Kayathri

0 Kudos
Reply
1,195 Views
BlackNight
NXP Employee
NXP Employee

Hi Kayathri,

you have a few problems (or bugs, actually) in your code:

- you are using three large arrays (3x256 bytes) local to your function. If you have not allocated enough stack, this will be a problem.

- you are defining f_check[] twice.

- but the real problem is: strcmp() compares the strings up to a zero terminating byte. You don't have that as you initialize the buffers with a pattern, but you don't set the terminating character. I suggest you either fix that, or you are using strncmp() instead.

I hope this makes the problem clear and helps,

Erich

0 Kudos
Reply