1、C語言中字符是使用char來定義的,使用關(guān)系運(yùn)算符(,,=)即可對(duì)字符進(jìn)行比較。在編譯器中定義a、b兩個(gè)字符型變量,并為其賦值,按照如圖所示編寫代碼。
專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)嫩江免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
2、運(yùn)行代碼后,我們可以得到如圖所示結(jié)果。1表示條件為真,0表示條件為假。
3、字符串使用char[]來定義,可以使用strcmp()來判斷大小,也可以使用關(guān)系運(yùn)算符(,,=)判斷大小。
4、使用strcmp()對(duì)字符串進(jìn)行比較大小時(shí),需要引入頭文件string.h。
5、運(yùn)行代碼后,我們可以得到如圖所示結(jié)果。使用strcmp進(jìn)行判斷時(shí),返回結(jié)果為0,表示兩個(gè)字符串相等。返回結(jié)果大于0,表示第一個(gè)參數(shù)字符串大。返回結(jié)果小于0,表示第二個(gè)參數(shù)字符串大。
cmp 就是比較函數(shù),用于確定兩個(gè)對(duì)象的大小關(guān)系
這是需要你自己定義的
看起來你真的暈了。
先明確問題,你打算操作一個(gè)數(shù)組,數(shù)組的每個(gè)元素是一個(gè)指針,指向2個(gè)元素的數(shù)組。元素的大小關(guān)系為先比較第一個(gè)元素,第一個(gè)元素相同比較第二個(gè)元素。
如果這是樣,你的分配代碼就錯(cuò)了。
int
*b,**a;
a
=
(int**)malloc(500000*sizeof(int*));
//這里應(yīng)是對(duì)int*來分配。
for(i=0;i500000;i++)
{
b
=
malloc(2*sizeof(int));
a[i]
=
b;
}
qsort的調(diào)用是對(duì)。
cmp的寫法有問題,入?yún)?shí)際是數(shù)組元素的指針,這里元素是int*,入?yún)?yīng)該是int**,而你要比較的數(shù)組,這個(gè)指針指向的內(nèi)容。
int
cmp(const
void*
a,const
void*
b)
{
int
*ap
=
*(int**)a;
int
*bp
=
*(int**)b;
if(ap[0]
==
bp[0])
return
ap[1]
-
bp[1];
else
return
a[0]
-
b[0];
}
int cmp(struct data v1,struct data v2)
{
if(v1.cnt v2.cnt) return 1;
else if(v1.cnt v2.cnt) return -1;
else return strcmp(v1.w,v2.w);
}