⑴ c語言中 memcmp 和 strcmp 函數有哪些區別
memcmp按位元組比較,可以設置比較的位數 strcmp按字元比較,只能比較整個字元串 都是用ASCII碼進行比較,效率在數量級上不會相差太大的 望採納
⑵ c語言中的strcmp函數
c風格字元串是以'\0'為結束標志的。如果你的name[10]沒有初始化,用scanf得到前3個字元為abc,後面的是隨機的,當你使用strcmp(name,
"abc")的時候,有可能你的name低第四個字元正好是'\0',那麼此時就是兩個相同,否則就是不同。
舉個例子
如果你的name的分布是"abc\0defghi";此時你使用strlen獲取他的長度將會是3,這就是c風格字元串以'\0'結束,後面的就不考慮了,使用strcmp也是同樣的道理。
解決的辦法是你在name定義的時候初始化
兩種方法
1、char
name[10]
=
{0};
2、char
name[10];
memset(name,
0,
sizeof(name));
⑶ c語言中strcmp(p->name,s)是什麼意思
p=head; /*將頭指針賦給p*/
while(strcmp(p->name,s) && p != NULL) /*當記錄的姓名不是要找的,或指針不為空時*/
{
p=p->next; /*移動指針,指向下一結點*/
}
這樣會看的更清楚
這是單向鏈表搜索.
strcmp(str1,str2) 函數用來比較兩個string ,返回一個int 值來表示這兩個 string 的關系。
如果兩個string相等, 返回0, 如果不等就返回第一個不等的字元的關系。例如:
strcmp("abc","abc") 兩個string相等,所以返回值為 0 ;
strcmp("abc","acc") 兩個string不等,第一個不等的字元是'b' 和 『c』, 而『b' 的ascii嗎值小於c,所以函數返回一個小於0的整數, 具體是幾,你不用關心,因為不一定是幾,但一定小於0.表示第一個string小於第二個string。
strcmp("acc","abc") string不等,結果和上面相反,返回一個不一定是幾的正整數。
而在c語言中,因為沒有布爾類型變數,所以if 靠 所以 bits 的值來判斷真假,全零表示假,其他一律為真,簡單的說,就是如果if()括弧內的表達式為0時為假,其他所有情況都為真(記住是數值0,而不是字元『0』, 因為字元『0』的數值不是0. 如果你不明白括弧裡面的也無所謂。你可以試試
print 0 和 print (int)『0』 , 你就看出區別了。)
而上面的程序while(strcmp(p->name,s) && p != NULL) 是說,比較用戶輸入的名字s與p節點的name,如果相等,strcmp返回0, while條件為假,循環結束。
如果s與name不等,strcmp返回一個不為0的整數,條件為真,然後再判斷p是不是尾節點,P!=Null 就是判斷是不是最後一個節點,如果是最後一個節點,就是說p=null, 那麼就返回假,真&&假 為假, 條件為假,循環結束。
如果p!=null,既不是最後一個節點,則返回真,真&&真為真,所以進入循環p=p->next;/*移動指針,指向下一結點*/,而後重復判斷while條件,直到找到相同名字,或者鏈表結束。
你這個函數有一個前提條件,就是頭結點head不能為空,如果head節點為空while(strcmp(p->name,s) && p != NULL)這里要出錯。
⑷ C語言strcmp和直接「==」有什麼區別
比較兩個字元串的大小用strcmp函數,這個函數內是依次比較兩個字元串的每個字元,一直到遇到不同的字元或某個字元串的結尾為止。
char
ch1[20]
=
"hello";
char
ch2[20]
=
"heworld";
而如果ch1
==
ch2這樣對比的是兩個字元串的首地址是否相同,而不是字元串的內容按照字典序的大小。
⑸ C語言的strcmp是什麼意思
strcmp(str1,str2)函數就是比較參數中兩個字元串str1 和 str2的大小(大小寫敏感,即"A" != "a"),如果完全相等,返回0,如果str1 < str2(按照字母順序比較),返回-1,如果str1 > str2,則返回1。
上面的代碼都是在比較字元串sRuleGroup是否等於"PST","PPP"等,然後根據不同的比較結果作不同是事情。。。
⑹ C語言中:strcmp函數如何使用
原型:extern int strcmp(const char *s1,const char * s2);
用法:#include <string.h>
功能:比較字元串s1和s2。
相關函數:wcscmp
一般形式:strcmp(字元串1,字元串2)
說明:
當s1<s2時,返回值<0
當s1=s2時,返回值=0
當s1>s2時,返回值>0
即:兩個字元串自左向右逐個字元相比(按ASCII值大小相比較),直到出現不同的字元或遇'\0'為止。如:
"A"<"B" "a">"A" "computer">"compare"
特別注意:strcmp(const char *s1,const char * s2)這裡面只能比較字元串,不能比較數字等其他形式的參數。
⑺ C語言strcmp(name,eng[i].name)什麼意思
strcmp是C的庫函數,功能是把()中的形參指針指向的字元串比較一下,按對應字元的ASCII碼大小確定返回值:前者大於後者時返回1,相等時返回0,前者小於後者時返回-1。strcmp(name,eng[i].name)的意思就是比較name和eng[i].name指向的字元串誰大誰小或相等。
⑻ C語言中strcmp是什麼意思有什麼功能和作用
strcmp是比較兩個字元串的大小,兩個字元串相同時返回0,第一個字元串大於第二個字元串時返回一個正值,否則返回負值.
比較兩個字元串的演算法是:逐個比較兩個串中對應的字元,字元大小按照ASCII碼值確定,從左向右比較,如果遇到不同字元,所遇第一對不同字元的大小關系就確定了兩個字元串的大小關系,如果未遇到不同字元而某個字元串首先結束,那麼這個字元串是較小的,否則兩個字元串相等。
具體如下:
1、簡介C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
2、基本介紹
C語言,是一種通用的、過程式的編程語言,廣泛用於系統與應用軟體的開發。具有高效、靈活、功能豐富、表達力強和較高的移植性等特點,在程序員中備受青睞。最近25年是使用最為廣泛的編程語言。
3、運算
C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,對此合理進行分類,找出它們與數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。