strcmp is not working in KDS

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

strcmp is not working in KDS

跳至解决方案
1,447 次查看
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

标签 (1)
标记 (1)
0 项奖励
回复
1 解答
1,184 次查看
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 项奖励
回复
3 回复数
1,184 次查看
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 项奖励
回复
1,184 次查看
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 项奖励
回复
1,185 次查看
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 项奖励
回复