久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3894|回復: 5
打印 上一主題 下一主題
收起左側

關于C語言strcmp函數數組的比較問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:847776 發表于 2021-2-3 21:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
使用strcmp來比較兩個相同的字符數組時,得不到相等的結果。根據程序運,table1和table2賦值相同的值,應該相等才對啊,但我將if(strcmp(table1,table2)==0)變為if(strcmp(table1,table2)!=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 a,s;
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(table1,table2)==0)
  {
    while(1)
    {
      Bee();
    }
  }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:693038 發表于 2021-2-4 11:11 | 只看該作者
strcmp比較的是字符串,table1 table2是數組,差異在'\0'
回復

使用道具 舉報

板凳
ID:871393 發表于 2021-2-4 18:03 | 只看該作者
樓上說的對 我補充一下 存6個字符的數組請用7個byte空間 多一個留給最后的0,也就是'\0'
字符串復制可用strcpy或strncpy, 不必循環

如果不想改以上問題, 其他解決方法:
字符串比較可用strncmp. 可避免這個問題
使用內存值比較memcmp, 與前一條功能類似
回復

使用道具 舉報

地板
ID:847776 發表于 2021-2-4 20:36 | 只看該作者
lincheng15 發表于 2021-2-4 11:11
strcmp比較的是字符串,table1 table2是數組,差異在'\0'

table1和table2我定義的都是uchar,也就是字符型的數組,那里面的6個元素,不就是以字符串的形式存在的嗎?哪里理解錯了呢?
回復

使用道具 舉報

5#
ID:847776 發表于 2021-2-4 22:33 | 只看該作者
77599585 發表于 2021-2-4 18:03
樓上說的對 我補充一下 存6個字符的數組請用7個byte空間 多一個留給最后的0,也就是'\0'
字符串復制可用str ...

想請教下,您的意思是字符型數組table1[6],這里的6是包含了\0的,對嗎?那我給它賦值6個元素之后,\0會被覆蓋掉嗎?
如果會被覆蓋掉,那這個字符數組是不是就不合法了,所以才導致strcmp結果不正確?
如果不會被覆蓋,那我最后一個元素是否就賦值不成功呢(因為加上\0一共才6個byte空間)?
回復

使用道具 舉報

6#
ID:871393 發表于 2021-2-5 09:39 | 只看該作者
憶1709 發表于 2021-2-4 22:33
想請教下,您的意思是字符型數組table1[6],這里的6是包含了\0的,對嗎?那我給它賦值6個元素之后,\0會 ...

結尾的0是可以被覆蓋的
str所有函數, 都應當使用以0結尾的字符串
你可以使用指針方式初始化字符串 這樣會默認加一位0
unsigned char *str1 = "abc";
這樣str1實際上就是{'a', 'b', 'c', '\0'}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本中出视频 | 一区二区三区韩国 | 一区二区三区四区免费观看 | 伊人精品在线 | 精品久久久久久久 | 国产精品夜间视频香蕉 | 国产成人精品一区二区三区四区 | 一级做a爰片性色毛片16 | 亚洲男人网 | 欧美一区二区小视频 | 国产综合久久 | 亚洲日本成人 | 狠狠草视频 | 国产精品激情小视频 | 久久精品亚洲国产奇米99 | 91在线成人| 91视频在线 | 日韩午夜电影 | 亚洲一区二区精品视频 | 中文字幕在线三区 | 中文字幕在线免费 | 天天射影院 | 免费午夜视频 | 91网站在线看| 国产成人在线免费 | 午夜影院毛片 | 亚洲高清在线观看 | 韩国av网站在线观看 | 亚洲国产精品成人无久久精品 | 日韩性在线 | 久久成人精品 | 国产精品视频一区二区三区 | 国内精品免费久久久久软件老师 | 国产精品视频久久久久久 | 成人免费福利视频 | 亚洲 精品 综合 精品 自拍 | 久久99网 | 成人性生交大片免费看r链接 | 国产一区二区黑人欧美xxxx | 久久久久久久久淑女av国产精品 | 亚洲第一视频网站 |