1樓:匿名使用者
要寫for迴圈判斷,不能直接用==,也不能用strcmp等標準庫裡面的函式
2樓:風若遠去何人留
c語言字串對比可以呼叫標準庫函式strcmp。
該函式宣告在string.h中,形式為
int strcmp(char *a, char *b);
返回值有三種情況,1,0或-1.
其比較原則為:
1 從第一個字元開始按照ascii碼值比較,如果a的比b的大,返回1;如果a的比b的小,返回-1;如果相等,繼續比較下一個字元。
2 當遇到任意一個字串達到尾部(值為\0),退出比較過程。
3 如果長度相等,即二者均達到\0,返回0,此時表示二者相等。
4 如果a的長度大,返回1,否則返回-1。
3樓:網路小度
對比 長度對比還是大小寫對比,請明示
長度對比有專門的函式,計算出字串長度,對比
大小寫對比可以用指標的方式,一一對比。
4樓:
字串的比較需要一個個字元比較,不能用直接==判斷。
如果支援strcmp函式的,可以直接用這個函式如果不支援的,可以自己寫
char *ls = "mnjhg00000"; // 比較用的字串
char *a = lk, *b = ls;
bool bsame = true;
while (*b!='\0')}
5樓:匿名使用者
== c不能過載操作符的
用strcmp 函式吧
6樓:匿名使用者
都定長了,一個字元一個字元比較啊
請教c語言字串和字元陣列的比較問題
7樓:yuanyuan源遠
利用fgets()取得一個字串,直到讀取到"回車"符,而你得到的字串中含有「回車」(ascii:10),比你要比較的字串多一個「回車」,所以strcmp()比較結果一直不為零。
如第一次while迴圈的結果:
8樓:it孤鶩
#include
#include
#include
int main(void)
fclose(fp);
system("pause");
return 0;
}上面的**更靠譜
你用過用fgets 那麼處理的字串後面一直要加'\0'
9樓:匿名使用者
fgets()到buff後,沒有\0結束標記
10樓:餘煙琦釵
c語言的字元陣列有兩種,比較方式也有所不同。
1字串。
c語言的字串是用字元陣列表示的。約定以'\0'(ascii碼0)作為結尾標記。
對於字串類的字元陣列,可以用string.h中的strcmp函式進行比較。
intstrcmp(char
*str1,
char
*str2);
其比較規則為:
a,從左向右依次比較每個元素;
b,如果出現str1的元素ascii碼比較大,則返回1;如果出現str2元素ascii碼比較大,則返回-1。如果相等,則繼續。
c,如果一直相等,直到遇到\0,這時檢查是否均為\0,如果均為\0,那麼返回0;
d,如果str1到\0,而str2沒到,返回-1;
否則返回1。
總結規則就是,如果str1比str2大,返回1;如果相等,返回0;如果str1小,返回-1。
2不帶\0結束的字元陣列。
對於此類陣列,沒有庫函式可供使用,只能自己寫函式進行比較。規則可以仿照strcmp的規則。
由於沒有\0作為結束,所以引數中必須傳入每個陣列的元素個數。
int char_array_cmp(char *s1, int l1, char *s2, int l2)
51微控制器中C語言int能轉換為字串型別嗎?怎麼轉換
因為是c51,所以不能用 vc 裡面的c語言 eg itoa,也不要用列印的 eg sprintf 為什麼?因為c51的記憶體太小 如果這樣用非常佔用資源.下面的朋友回答就顯得不夠專業了.所以,一般我們是這樣自己寫 使用實現的 字串改為陣列的形式unsigned char dat 5 dat 4 n...
微控制器C語言程式設計題,微控制器C語言程式設計題
爬行的山羊 這是兩個題啊。哈哈好做,第一個有c語言的冒泡法排序,第二個用中斷,讀,輸出就可以 include define led0 0 define led1 1 define led2 2 define ledport p2 sbit sw0 p1 0 sbit sw1 p1 1 sbit sw...
微控制器c語言中定義,微控制器C語言中 定義a1 P0 1 a2 P0 2 a8 P0 7 b P2 0 。a1 a8不斷隨機為1。
這樣實現 sbit p20 p2 0 char consum 0 char i,bitflag 0x01 for i 0 i 8 i if consum 3 p20 1 希望我的回答對你有幫助,有什麼問題歡迎一起 謝謝。 如果是c51微控制器 include void main 如果找完一次p0口後...