• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于C语言strcmp函数数组的比较问题

zzgege 2021-02-04 浏览量:1295
使用strcmp来比较两个相同的字符数组时,得不到相等的结果。根据程序运,table1和table2赋值相同的值,应该相等才对啊,但我将if(strcmp(table1table2)==0)变为if(strcmp(table1table2)!=0)时,蜂鸣器响了,也就是说两个数组不相等。请教下这是什么原因呢?难道不能这样比较吗?小弟新手,感谢指教。


代码:
======================
#include <reg52.h>
#include <intrins.h>
#include <string.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit Beef=P0^1;
uchar code arrl[]={"123456"};
uchar table1[6]table2[6];
uchar as;
void delay(uint i) //延时函数
{while(i--);}
void Bee() //蜂鸣器函数
{
    int x;   
    for(x=1000;x>0;x--)
        {
         Beef=~Beef;
         delay(10);
        }
}
void main()
{
  for(a=0;a<6;a++)
  {
    table1[a]=arrl[a];
    table2[a]=arrl[a];
  }

  if(strcmp(table1table2)==0)
  {
    while(1)
    {
      Bee();
    }
  }
}


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这个是字符串比较函数,所以字符串最后一位必须是0才能判断,strcmp找不到字符串最后一位是0所以就是比较内存里面的随机数

    ,那个arrl数据里面有7个元素,最后一个0x00没有显示出来,解决办法你直接定义2个字符串比较,不要用数组,还有就是下面两个数组定义成7,然后主函数赋值也把6改7就可以用了

    • 发布于 2021-02-04
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • strcmp是以\0来结束比较的,而你这样处理,来个数组后续数据是不定的,而且很大可能不同啊。
    • 发布于2021-02-05
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

关于C语言strcmp函数数组的比较问题