?? 08.htm
字號:
<TD><FONT face=宋體 size=2>void *lsearch(const void * key ,const void * base
,size_t * nmemb,size_t size, int ( * compar) (const void * ,const void
*));<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>函數說明 </FONT></DIV></TD>
<TD><FONT face=宋體
size=2>lsearch()利用線性搜索在數組中從頭至尾一項項查找數據。參數key指向欲查找的關鍵數據,參數base指向要被搜索的數組開頭地址,參數nmemb
代表數組中的元素數量,每一元素的大小則由參數size 決定,最后一項參數compar
為一函數指針,這個函數用來判斷兩個元素是否相同,若傳給compar
的第一個參數所指的元素數據和第二個參數所指的元素數據相同時則返回0,兩個元素數據不相同則返回非0
值。如果lsearch()找不到關鍵數據時會主動把該項數據加入數組里。<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD>
<TD><FONT face=宋體
size=2>找到關鍵數據則返回找到的該筆元素的四肢,如果在數組中找不到關鍵數據則將此關鍵數據加入數組,再把加入數組后的地址返回。<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>范例 </FONT></DIV></TD>
<TD><FONT face=宋體
size=2>#include<stdio.h><BR>#include<stdlib.h><BR>#define
NMEMB 50<BR>#define SIZE 10<BR>int compar (comst void *a,const void
*b)<BR>{<BR>return (strcmp((char *) a, (char *)
b));<BR>}<BR>main()<BR>{<BR>char
data[NMEMB][SIZE]={“Linux”,”freebsd”,”solzris”,”sunos”,”windows”};<BR>char
key[80],*base,*offset;<BR>int i,
nmemb=NMEMB,size=SIZE;<BR>for(i=1;i<5;i++){<BR>fgets(key,sizeof9key),stdin);<BR>key[strlen(key)-1]=’\0’;<BR>base
= data[0];<BR>offset = (char
*)lfind(key,base,&nmemb,size,compar);<BR>if(offset
==NULL){<BR>printf(“%s not found!\n”,key);<BR>offset=(char *)
lsearch(key,base,&nmemb,size,compar);<BR>printf(“Add %s to data
array\n”,offset);<BR>}else{<BR>printf(“found : %s
\n”,offset);<BR>}<BR>}<BR>}<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>執行 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>linux<BR>found:linux<BR>os/2<BR>os/2 not
found!<BR>add os/2 to data array<BR>os/2<BR>found:os/2<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><BR><FONT face=宋體 size=2><A
name=linuxc129></A></FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD>
<TD><FONT face=宋體 size=2><BR>qsort(利用快速排序法排列數組) </FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>相關函數 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>bsearch<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>#include<stdlib.h><BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>定義函數 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>void qsort(void * base,size_t nmemb,size_t
size,int ( * compar)(const void *, const void *));<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>函數說明 </FONT></DIV></TD>
<TD><FONT face=宋體
size=2>參數base指向欲排序的數組開頭地址,參數nmemb代表數組中的元素數量,每一元素的大小則由參數size決定,最后一項參數compar為一函數指針,這個函數用來判斷兩個元素間的大小關系,若傳給compar的第一個參數所指的元素數據大于第二個參數所指的元素數據則必須回傳大于零的值,兩個元素數據相等則回傳0。<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2><BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>附加說明 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2><BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>范例 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>#define nmemb 7<BR>#include
<stdlib.h><BR>int compar (const void *a ,const void *b)<BR>{<BR>int
*aa=(int * ) a,*bb = (int * )b;<BR>if( * aa >* bb)return 1;<BR>if( * aa
== * bb) return 0;<BR>if( * aa < *bb) return -1;<BR>}<BR>main(
)<BR>{<BR>int base[nmemb]={ 3,102,5,-2,98,52,18};<BR>int i;<BR>for ( i=0;
i<nmemb;i++)<BR>printf(“%d
“,base[i]);<BR>printf(“\n”);<BR>qsort(base,nmemb,sizeof(int),compar);<BR>for(i=0;i<nmemb;i++)<BR>printf(“%d”base[i]);<BR>printf(“\n”);<BR>}<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>執行 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>3 102 5 -2 98 52 18<BR>-2 3 5 18 52 98
102<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><BR><FONT face=宋體 size=2><A
name=linuxc130></A></FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD>
<TD><FONT face=宋體 size=2><BR>rand(產生隨機數) </FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>相關函數 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>srand,random,srandom<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>#include<stdlib.h><BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>定義函數 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>int rand(void)<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>函數說明 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>rand()會返回一隨機數值,范圍在0至RAND_MAX
間。在調用此函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。關于隨機數種子請參考srand()。<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD>
<TD><FONT face=宋體
size=2>返回0至RAND_MAX之間的隨機數值,RAND_MAX定義在stdlib.h,其值為2147483647。<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>范例 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>/* 產生介于1 到10
間的隨機數值,此范例未設隨機數種子,完整的隨機數產生請參考<BR>srand()*/<BR>#include<stdlib.h><BR>main()<BR>{<BR>int
i,j;<BR>for(i=0;i<10;i++)<BR>{<BR>j=1+(int)(10.0*rand()/(RAND_MAX+1.0));<BR>printf(“%d
“,j);<BR>}<BR>}<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>執行 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>9 4 8 8 10 2 4 8 3 6<BR>9 4 8 8 10 2 4 8 3
6<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><BR><FONT face=宋體 size=2><A
name=linuxc131></A></FONT></DIV></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2><BR></FONT></DIV></TD>
<TD><FONT face=宋體 size=2><BR>srand(設置隨機數種子) </FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>相關函數 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>rand,random srandom<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>表頭文件 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>#include<stdlib.h><BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>定義函數 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>void srand (unsigned int seed);<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>函數說明 </FONT></DIV></TD>
<TD><FONT face=宋體
size=2>srand()用來設置rand()產生隨機數時的隨機數種子。參數seed必須是個整數,通??梢岳胓eypid()或time(0)的返回值來當做seed。如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>返回值 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2><BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>范例 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>/* 產生介于1 到10
間的隨機數值,此范例與執行結果可與rand()參照*/<BR>#include<time.h><BR>#include<stdlib.h><BR>main()<BR>{<BR>int
i,j;<BR>srand((int)time(0));<BR>for(i=0;i<10;i++)<BR>{<BR>j=1+(int)(10.0*rand()/(RAND_MAX+1.0));<BR>printf(“
%d “,j);<BR>}<BR>}<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><FONT face=宋體 size=2>執行 </FONT></DIV></TD>
<TD><FONT face=宋體 size=2>5 8 8 8 10 2 10 8 9 9<BR>2 9 7 4 10 3 2 10 8
7<BR></FONT></TD></TR>
<TR>
<TD vAlign=top width=80>
<DIV align=right><BR></DIV></TD></TR></TBODY></TABLE></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -