第一篇:C語言函數學習
函數
一:學習目的
1:正確理解函數在C語言程序設計中的作用和地位。2:熟悉函數的定義、原型聲明和調用的方法。3:熟悉數組名做函數參數的用法
二:學習準備
1:有一個一維數組score,內放10個學生成績,求平均成績。
#include
float score[10],aver;int i;
printf(“input 10 scores:n”);
for(i=0;i<10;i++)
scanf(“%f”,&score[i]);
printf(“n”);
aver=average(score);
printf(“%5.2fn”,aver);}
float average(float array[10]){ int i;
float aver,sum=array[0];
for(i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
return(aver);} 2:有兩個班級,分別有35名和30名學生,調用一個average函數,分別求這兩個班的學生的平均成績。
#include
float score1[5]={98.5,97,91.5,60,55};
float score2[10]={6 5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};
printf(“%6.2fn”,average(score1,5));
printf(“%6.2fn”,average(score2,10));} float average(float array[ ],int n)
{ int i;
float aver,sum=array[0];
for(i=1;i sum=sum+array[i]; aver=sum/n; return(aver);} 三:實驗內容: 1:選擇題 (1)以下函數調用語句中含有_ _B_______個實參。 fun((exp1,exp2),(exp3,exp4,exp5)); A.1 B.2 C.4 D.5(2)以下說法正確的是(C)。 (3)以下程序有語法性錯誤,有關錯誤原因的正確說法是(C)。 Main(){int G=5,k;void prt_char();…… k=prt_char(G);……} (4)C語言允許函數值類型缺省定義,此時該函數值隱含的類型是(B)。 (5)若用數組名作為函數調用的實參,傳遞給形參的是(A)。 (6)若使用一維數組名作函數參數,則以下正確的說法是(C)。 2:編程題: 1、編寫函數fun,它的功能是輸出一個200以內能被3整除且個位數為6的所有整數,返回這些數的個數。#include int i,a=0;printf(“這些數分別為:”);for(i=6;i<200;i+=10){ if(i%3==0)a++;if(i%3!=0)continue;} printf(“%d ”,i);printf(“n”);printf(“這些數的個數為%d個n”,a);} void main(){ } 2、已有變量定義和函數調用語句:int a=1,b=-5,c;c=fun(a,b);fun函數的作用是計算兩個數之差的絕對值,并將計算好的值返回調用函數,請編寫程序。#include if(z<0)z*=-1;else z*=1;return(z);} int main(){ int a=1,b=-5,c;c=fun(a,b);printf(“%dn”,c);} 3、寫一個函數,要求把從主函數傳遞過來的一個字符串中的大寫字母、小寫字母、數字和其它字符進行統計,并把結果顯示輸出。 #include { int a=0,b=0,c=0,d=0;int i;for(i=0;i if(e[i]>'A'&&e[i]<'Z')a++;else if(e[i]>'a'&&e[i]<'z')b++;else if(e[i]>'0'&&e[i]<'9')c++;else d++;} printf(“大寫字母有%d個n小寫字母有%d個n數字有%d個n其它字符有%d個n”,a,b,c,d); } void main(){ char e[1024];int n;printf(“請輸入一串字符n”);gets(e);n=strlen(e);fun(e,n);} 4、輸入一個字符串,然后在一個函數中把這個字符串里的字長符頭尾互換:如輸入字符串chinese,要輸出:esenihc。 #include int i;printf(“倒序后輸出的字符為n”);for(i=len-1;i>=0;i--){ printf(“%c”,ch[i]); } printf(“n”);} void main(){ char ch[1024];int len;printf(“請輸入一串字符:n”);gets(ch);len=strlen(ch);fun(ch,len);} Turbo C函數 Turbo C函數 alloc.h brk 【功能】更改數據段空間的分配 【原型】int brk(void *endds)【位置】alloc.h 【說明】將程序數據段的頂部設置為endds所指向的內存位置。調用成功之后,返回0。如果調用失敗則返回-1,同時設置errno?!緟⒁姟縞oreleft calloc 【功能】分配內存。 【原型】void *calloc(size_t nelem,size_t elsize)【位置】stdib.h,alloc.h 【說明】為nelem數據項的每elsize個字節分別分配空間,同時在空間中保存0值。返回一個指向新分配塊的指針,如果沒有足夠的空間則返回NULL?!緟⒁姟縨alloc coreleft 【功能】返回測出的未使用內存量。 【原型】小型模塊中unsigend long coreleft(void)【位置】alloc.h 【參見】malloc farcallc 【功能】從高端開始分配內存。 【原型】void far *farcalloc(unsigned ling nunits,unsigned ling unitsz)【位置】alloc.h 【說明】為nunits數據項的每unitsz個字節分配空間。返回指向新分配塊的指針,如果沒有足夠的空間創建數據塊,則返回NULL 【參見】farmalloc,farfree,farcoreleft,malloc,calloc farcoreleft 【功能】返回測出的高端未使用內存量。【原型】unsigned long farcoreleft(void)【位置】alloc.h 【說明】返回最高分配數據塊和內存末端之間所剩的所有空間量(按照字節計算)?!緟⒁姟縡arcalloc,farmalloc,coreleft farfree 【功能】從高端釋放一個數據塊。 【原型】void farfree(void far *block)【位置】alloc 【參見】farmalloc,farcalloc farmalloc 【功能】從高端開始分配。 【原型】void far *farmalloc(unsigned long nbytes)【位置】alloc.h 【說明】返回一個指向新分配數據塊的指針,如果沒有足夠的空間創建數據塊則返回NULL 【參見】farcoreleft,farfree,farcalloc,malloc,farrealloc farrealloc Turbo C函數 【功能】調整高端的分配數據塊。 【原型】void far *farrealloc(void far *oldblock,unsigned long nbytes)【位置】alloc.h 【說明】返回重新分配數據塊的地址,如果分配失敗則返回NULL。返回值可能與源地址不同?!緟⒁姟縡armalloc,realloc free 【功能】釋放通過malloc或者calloc分配的數據塊?!驹汀縱oid free(void *block)【位置】stdlib.h,alloc.h 【參見】maloc,calloc,freemem malloc 【功能】分配內存。 【原型】void *malloc(size_t size)【位置】alloc.h,stdlib.h 【說明】大小按照字節計算。返回一個指向新分配數據塊的指針,如果沒有足夠的空間創建數據塊,則返回NULL。如果size==0,則也返回NULL。 【參見】allicmem,free,calloc,realloc,farmalloc realloc 【功能】重新分配主存。 【原型】void *realloc(void *block,size_t size)【位置】alloc.h,stdlib.h 【說明】嘗試將原先分配的數據塊擴大或者縮小只size字節值。返回重新分配之后與原有地址不同的數據塊的地址。如果數據塊不能重新分配,或者size==0,則返回NULL 【參見】malloc,free sbrk 【功能】更改數據段的空間分配?!驹汀縱oid *sbrk(int incr)【位置】alloc.h 【說明】為數據塊添加incr個字節。成功實現之后,sbrk返回原有中斷值。如果失敗則返回-1,同時設置errno.【參見】brk ASSERT.H assert 【功能】對條件進行測試,可能會退出程序運行。【原型】void assert(int test)【位置】assert.h 【參見】abort BIOS.H bioscom 【功能】RS-232的I/O通訊。 【原型】int bioscom(int cmd,char abyte,int port)【位置】bios.h 【說明】cmd的值及含義如下。0 設置通訊參數abyte。1 將abyte發送出去。接受一個字符(位于返回值的下8位中)。 Turbo C函數 返回狀態。 Port為0表示COM1,為1表示COM2,依次類推。 返回值的高8位表示狀態位,低8位內容根據cmd而定。biosdisk 【功能】BIOS磁盤服務。 【原型】int biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer) 【位置】bios.h 【說明】成功返回0,否則返回值為錯誤代碼。biosequip 【功能】檢查設備。 【原型】int biosequip(void)【位置】bios.h 【說明】返回BIOS設備的標記。bioskey 【功能】鍵盤接口。 【原型】bioskey(int cmd)【位置】bios.h 【說明】cmd的取值及動作如下。Cmd 動作 0 返回緩存中鍵入的掃描碼,并從緩存中刪除它。如果緩存為空,則等待下一次鍵入。1 返回緩存中鍵入的掃描碼,但是不從緩存中刪除它。如果緩存為空,則返回0。2 返回BIOS切換狀態的標志。biosmemory 【功能】返回內存大小。 【原型】int biosmemory(void)【位置】bios.h 【說明】返回內存大小,以1KB為單位。biosprint 【功能】直接使用BIOS實現打印機I/O。 【原型】int biosprint(int cmd,int abyte,int port)【位置】bios.h 【說明】如果cmd為0,說明字節已經打印。如果cmd為1,說明打印機端口已經初始化。如果cmd為2,說明當前打印機狀態可讀。 對應所有cmd數值都返回當前打印機狀態。biostime 【功能】BIOS定時器服務程序。 【原型】long biostime(int cmd,long newtime)【位置】bios.h 【說明】如果cmd為0,則讀取BIOS定時器,如果cmd為1則設置BIOS定時器。時間從午夜開始計算,以時鐘滴答為單位,每秒18.2的滴答。 CONIO.H cgets 【功能】從控制臺讀取字符串。【原型】char *cgets(char *str)【位置】conio.h Turbo C函數 【說明】str[0]必須包含讀入字符串的最大長度,str[1]則相應地設置為實際讀入字符的個數。字符串從str[2]開始,函數返回&str[2]。【參見】cputs,gets,fgets clreol 【功能】清除文本模式的行尾?!驹汀縱oid clreol(void)【位置】conio.h 【參見】clrscr,delline,window clrscr 【功能】清除文本模式的窗口。【原型】void clrscr(void)【位置】conio.h 【參見】clreol,delline,window cprintf 【功能】在屏幕上的文本窗口中格式化輸出 【原型】int cprintf(const char *format,…)【位置】conio.h 【說明】返回輸出的字節個數?!緟⒁姟縫rintf cputs 【功能】在屏幕上的文本窗口中書寫字符串。【原型】int cputs(const char *str)【位置】conio.h 【說明】返回打印的最后一個字符?!緟⒁姟縞gets,puts,fputs cputs 【功能】在屏幕上的文本窗口中書寫字符串。【原型】int cputs(const char *str)【位置】conio.h 【說明】返回打印的最后一個字符串?!緟⒁姟縞gets,puts,fputs cscanf 【功能】從控制臺執行格式化輸入。 【原型】int cscanf(char *format [,argument,…])【位置】conio.h 【說明】返回成功處理的輸入字段數目。如果函數在文件結尾處讀入,則返回值為EOF?!緟⒁姟縮canf delline 【功能】刪除文本窗口中的行?!驹汀縱oid delline(void)【位置】conio.h 【參見】clreol,clrscr,windows getch、getche 【功能】getch從控制臺得到字符,但是不回顯。Getche也從控制臺得到字符,但同時回顯在屏幕上。 【原型】int getch(void)4 Turbo C函數 int getche(void)【位置】conio.h 【說明】兩個函數都返回讀取的字符。字符馬上就可以使用,無需等到緩存整行之后。類似功能鍵和方向鍵這些特殊鍵都使用兩個字符組成的序列表示:一個0字符隨后跟一個按鍵的掃描碼。【參見】getpass,cgets,cscanf,kbhit,ungetch,putchar,getc getpass 【功能】讀入口令。 【原型】char *getpass(const char *prompt)【位置】conio.h 【說明】返回一個指針,指向這次調用覆蓋的一個靜態字符串?!緟⒁姟縢etch gettext 【功能】從文本模式的屏幕上將文本拷貝至內存中。 【原型】int gettext(int left,int top,int right,int bottom,void *destin)【位置】conio.h 【說明】坐標值與屏幕相關,左上角為(1,1)。如果成功則返回一個非0值。【參見】puttext,movetext gettextinfo 【功能】得到文本模式的視頻信息。 【原型】void gettextinfo(struct text_info *r)【位置】conio.h 【說明】結果以inforec的形式返回。 【參見】texttr,textbackground,textcolor,textmode,wherex,wherey,window gotoxy 【功能】在文本窗口中定位光標。【原型】void gotoxy(int x,int y)【位置】conio.h 【參見】wherex,wherey,window highvideo 【功能】選擇高密度的文本字符?!驹汀縱oid highvideo(void)【位置】conio.h 【說明】影響隨后的文本窗口函數調用,例如putch和cprintf?!緟⒁姟縧owvideo,normvideo,textcolor,gettextinfo,cputs,putch insline 【功能】在文本窗口的當前光標位置插入空白行?!驹汀縱oid insline(void)【位置】conio.h 【說明】當前光標位置的下一行依次向下推,最后一行消失?!緟⒁姟縞lreol,delline,window kbhit 【功能】檢查最近的鍵盤輸入。【原型】int kbhit(void)【位置】conio.h 【說明】如果存在鍵盤輸入,則kbhit返回一個非0整數?!緟⒁姟縢etc Turbo C函數 lowvideo 【功能】 為文本窗口輸出選擇低密度的字符?!驹汀縱oid lowvideo(void)【位置】conio.h 【說明】影響隨后的文本窗口函數調用,例如putch和cprintf。【參見】highvideo,normvideo movetext 【功能】將屏幕上一個矩形范圍的文本拷貝至另一個矩形中(文本模式)。 【原型】int movetext(int left,int top,int right,int bottom,int destleft,int desttop)【位置】conio.h 【說明】坐標與屏幕左上角(1,1)相對應,如果操作成功則返回非0值。【參見】gettext,puttext normvideo 【功能】選擇正確密度的字符?!驹汀縱oid normvideo(void)【位置】conio.h 【說明】影響隨后的文本窗口函數調用,例如putch和cprintf?!緟⒁姟縣ighvideo,lowvideo putch 【功能】在屏幕上的文本窗口中輸出字符。【原型】int putch(int ch)【位置】conio.h 【說明】使用當前的顏色和顯示屬性,返回顯示字符ch?!緟⒁姟縞printf,cputs,getch.putc.putchar prttext 【功能】將內存中的文本拷貝至屏幕上。 【原型】int puttext(int left,int top,int right,int bottom,void *source)【位置】conio.h 【說明】坐標與屏幕左上角(1,1)相對應,如果成功則返回一個非0值?!緟⒁姟縢ettext,movetext,window textattr 【功能】設置文本窗口函數的文本屬性?!驹汀縱oid textattr(int newattr)【位置】conio.h 【參見】textclolor,textbackground textbackground 【功能】選擇文本模式下的新背景顏色。 【原型】void textbackground(int newcolor)【位置】conio.h 【參見】textcolor,textattr textcolor 【功能】選擇文本模式下的新字符顏色?!驹汀縱oid textcolor(int newcolor)【位置】conio.h 【參見】textbackground, textattr,highvideo,lowvideo,normvideo ungetch 6 Turbo C函數 【功能】將一個字符退回至鍵盤。【原型】int ungetch(int ch)【位置】conio.h 【說明】下一次調用getch或者其他控制臺輸入函數時,將返回ch。如果成功則返回字符ch,返回EOF。 【參見】getch textmode 【功能】更改屏幕模式(文本模式下)?!驹汀縱oid textmode(int newmode)【位置】conio.h 【說明】不能用來將圖片模式更改為文本模式?!緟⒁姟縤nitgraph,gettextinfo wherex 【功能】得到當前文本窗口中光標的水平位置?!驹汀縤nt wherex(void)【位置】conio.h 【說明】返回從1到80范圍內的一個整數。【參見】wherey,gettextinfo,gotoxy wherey 【功能】得到當前文本窗口中光標的垂直位置?!驹汀縤nt wherey(void)【位置】conio.h 【說明】返回一個從1到25范圍內的一個整數?!緟⒁姟縲herex,gettextinfo,gotoxy window 【功能】定義激活的文本模式窗口。 【原型】void window(int left,int top,int right,int bottom)【位置】conio.h 【說明】屏幕左上角的坐標為(1,1)【參見】gettextinfo,textmode CTYPE.H isascii 【功能】如果c為有效的ASCII字符,則返回真?!驹汀縤sascii(c)【位置】ctype.h isalnum 【功能】如果c為字母或者數字,則返回真?!驹汀縤salnum(c)【位置】ctype.h isalpha 【功能】如果c為字母,則返回真。【原型】isalpha(c)【位置】ctype.h iscntrl 【功能】如果c為刪除字符或者普通的控制字符,則返回真。【原型】iscntrl(c) Turbo C函數 【位置】ctype.h isdigit 【功能】如果c為數字,則返回真?!驹汀縤sdigit(c)【位置】ctype.h isgraph 【功能】除了不包括空格字符之外,其功能與isprint一致?!驹汀縤sgraph(c)【位置】ctype.h islower 【功能】如果c為小寫字母。則返回真。【原型】islower(c)【位置】ctype.h isprint 【功能】如果c為可打印字符,則返回真?!驹汀縤sprint(c)【位置】ctype.h ispuct 【功能】如果c為標點符號字符,則返回真。【原型】ispuct(c)【位置】ctype.h isspace 【功能】如果c為空格、制表符、回車符、換行符、垂直制表符或者換頁符時,返回真。【原型】isspace(c)【位置】ctype.h isupper 【功能】如果c為大寫字母,則返回真?!驹汀縤supper(c)【位置】ctype.h isxdigit 【功能】如果c為十六進制數字,則返回真?!驹汀縤sxdigit(c)【位置】ctype.h toascii 【功能】將大于127的c轉換到0~127范圍,只保留c的低7位。【原型】toascii(c)【位置】ctype.h _tolower 【功能】將[A~Z]范圍內的字符c轉換為[a~z]范圍內的字符?!驹汀縚tolower(c)【位置】ctype.h _toupper 【功能】將[a~z]范圍內的字符c轉換為[A~Z]范圍內的字符。【原型】_toupper(c)【位置】ctype.h DIR.H 8 Turbo C函數 chdir 【功能】更改當前目錄。 【原型】int chdir(const char *path)【位置】dir.h 【說明】成功實現之后,chdir返回一個0值。否則返回-1,同時設置errno?!緟⒁姟縨kdir,rmdir findfirst 【功能】搜索磁盤目錄。 【原型】int findfirst(const char *filename,struct ffblk *ffblk,int attrib)【位置】dir.h 【說明】文件路徑中可以包括通配符?(匹配單個字符)和*(匹配多個字符)。如果成功返回0,沒有找到匹配結果或者出錯則返回-1,同時設置errno。findnext 【功能】繼續執行findfirst搜索。 【原型】int findnext(struct ffblk *ffblk)【位置】dir.h 【說明】文件路徑中可以包括通配符?(匹配單個字符)和*(匹配多個字符)。如果成功返回0,沒有找到匹配結果或者出錯則返回-1,同時設置errno。fnmerge 【功能】使用各個組成部分組建一個路徑。 【原型】void fnmerge(char *path,const char *drive,const char *dir,const char *name,const char *ext)【位置】dir.h 【參見】fnsplit fnsplit 【功能】將一個路徑分解成多個組成部分。 【原型】int fnsplit(const char *path,char *drive,char *dir,char *name,char *ext)【位置】dir.h 【說明】返回一個整數,由5個標志位組成?!緟⒁姟縡nmerege getcurdir 【功能】得到指定驅動器的當前目錄。 【原型】int getcurdir(int drive,char *directory)【位置】dir.h 【說明】drive為0表示默認驅動器 【參見】chdir,getcwd,getdisk,mkdir,rmdir getcwd 【功能】得到當前工作目錄。 【原型】char *getcwd(char *buf,int buflen)【位置】dir.h,dos.h 【說明】返回一個指向buf的指針,出現錯誤時返回NULL,同時設置errno?!緟⒁姟縢etcurdir,getdisk,mkdir,chdir,rmdir getdisk 【功能】得到當前驅動器?!驹汀縤nt getdisk(void)【位置】dir.h Turbo C函數 【說明】返回當前驅動器號,A驅動器使用0表示 【參見】getcurdir,setdisk,getcwd mkdir 【功能】創建一個目錄。 【原型】int mkdir(const char *path)【位置】dir.h 【說明】成功返回0,錯誤則返回-1,同時設置errno 【參見】chdir,rmdir mktemp 【功能】創建一個唯一的文件名稱?!驹汀縞har *mktemp(char *template)【位置】dir.h 【說明】使用唯一的文件名稱替換template,并且返回template的地址。Template必須由一個非空字符串和6個X后綴組成,例如MYFILEXXXXXX。rmdir 【功能】刪除目錄。 【原型】int rmdir(const char *path)【位置】dir.h 【說明】成功返回0,錯誤返回-1,同時設置errno?!緟⒁姟縨kdir,chdir searchpath 【功能】在DOS路徑中檢索一個文件。 【原型】char *searchpath(const char *file)【位置】dir.h 【說明】成功則返回一個指針,指向表示文件完全路徑名稱的字符串,否則返回NULL。返回的字符串保存在一個靜態區域內,每次重新調用都將覆蓋這一區域。【參見】exec…,findfirst,open,system setdisk 【功能】設置當前磁盤驅動器?!驹汀縤nt setdisk(int driver)【位置】dir.h 【說明】drive數值為0=A,1=B,2=C,依次類推。函數返回所有可用驅動器總數。 DOS.H absread 【功能】讀入絕對磁盤扇區。 【原型】int absread(int drive,int 1sect,void *buffer)【位置】dos.h 【說明】driver值為0=A,1=B,2=C,以此類推。Nsect表示讀/寫的扇區號碼。1sect表示開始邏輯扇區(第1個為0)。Buffer表示數據區的地址。成功返回0,錯誤返回-1并設置errno。abswrite 【功能】寫入絕對磁盤扇區。 【原型】int abswrite(int drive,int nsects,int 1sect,void *buffer)【位置】dos.h 【說明】driver值為0=A,1=B,2=C,以此類推。Nsect表示讀/寫的扇區號碼。1sect表示開始邏輯扇區(第1個為0)。Buffer表示數據區的地址。成功返回0,錯誤返回-1并設置errno。allocmem 10 Turbo C函數 【功能】分配DOS內存片斷。 【原型】int allocmem(unsigned size,unsigned *segp)【位置】dos.h 【說明】size表示請求的16位段落的號碼,分配區域的段地址保存在*segp中(offset=0)。成功返回-1,否則返回最大可用數據塊的大小,并設置_doserrno和errno?!緟⒁姟縡reemem bdos 【功能】MS DOS的系統調用。 【原型】int bdos(int dosfun,unsigned dosdx,unsigned dosal)【位置】dos.h 【說明】bdos的返回值為系統調用設置的AX值。【參見】bdosptr,int86,int86x bdosptr 【功能】MS DOS的系統調用。 【原型】int bdosptr(int dosfun,void *argument,unsigned dosal)【位置】dos.h 【說明】bdosptr的成功返回值為AX值,失敗則返回-1,同時設置errno和_doserrno。【參見】bdos,int86,int86x country 【功能】返回與country相關的信息。 【原型】struct country *country(int xcode,struct country *cp)【位置】dos.h 【說明】返回指針參數cp,MS DOS 3.0或以上版本支持。ctrlbrk 【功能】設置控制終端的句柄。 【原型】void ctrlbrk(int(*handler)(void))【位置】dos.h 【說明】句柄函數返回0退出當前程序,否則程序將繼續執行。delay 【功能】中斷執行一段時間(以毫秒計算)?!驹汀縱oid delay(unsigned milliseconds)【位置】dos.h 【參見】sleep disable 【功能】禁止中斷。 【原型】void disable(void)【位置】dos.h 【說明】禁止除了NMI之外的所有硬件中斷。【參見】enable dosexterr 【功能】得到DOS擴展錯誤的信息。 【原型】int dosexterr(struct DOSERROR *eblkp)【位置】dos.h 【說明】根據最后一次DOS調用填寫eblkp結構。返回exterror結構的值。dostounix 【功能】蔣時間和日期轉換成為NUIX格式。 Turbo C函數 【原型】long dostounix(struct date*d,struct time *t)【位置】dos.h 【說明】返回UNIX格式的日期和時間參數(秒數從1970年1月1日(GMT)開始計算)?!緟⒁姟縰nixtodos _emit_ 【功能】直接在代碼中插入文字?!驹汀縱oid emit(argument,…)【位置】dos.h enable 【功能】允許硬件中斷。【原型】void enable(void)【位置】dos.h 【參見】disable FP_OFF 【功能】得到遠端偏移地址。 【原型】unsigned FP_OFF(farpointer)【位置】dos.h 【參見】movedata,segread FP_SEG 【功能】得到遠端分段地址。 【原型】unsigned FP_SEG(farpointer)【位置】dos.h 【參見】movedata,segread freemem 【功能】釋放原先使用allocmem分配的DOS內存塊。【原型】int freemem(unsigned segx)【位置】dos.h 【說明】成功返回0,錯誤返回-1,同時設置errno。【參見】allocmem,free geninterrupt 【功能】生成軟件中斷?!驹汀?/p> 【位置】dos.h 【說明】調用之后可能所有寄存器的狀態都根據調用的中斷而定。注意,中斷可能導致C使用的寄存器處于一種不可預見的狀態之中。 【參見】int86,int86x,intdos,intdosx,bdos,bdosptr,intr,enable,disable getcbrk 【功能】得到控制中斷的設置?!驹汀縤nt getcbrk(void)【位置】dos.h 【說明】如果control_break檢查被關閉則返回0,如果檢查被打開則返回1。【參見】setcbrk,ctrlbrk getcwd 【功能】得到當前工作目錄。 【原型】char *getcwd(char *buf,int buflen)【位置】dos.h,dir.h Turbo C函數 【說明】返回一個指向buf的指針,出現錯誤時返回NULL,同時設置errno?!緟⒁姟縢etcurdir,getdisk,mkdir,chdir,rmdir getdate 【功能】得到MS DOS日期。 【原型】void getdate(struct date *datep)【位置】dos.h 【參見】setdate,gettime,ctime getdfree 【功能】得到磁盤的剩余空間。 【原型】void getfree(unsigned char drive,struct dfree *dtable)【位置】dos.h 【說明】如果出錯,則dtable結構中的df_sclus將設置為-1 【參見】getfat getdta 【功能】得到磁盤轉移地址?!驹汀縞har far *getdta(void)【位置】dos.h 【說明】返回一個指針,指向當前的磁盤轉移地址?!緟⒁姟縮truct,fcb,setdta getfat 【功能】得到指定驅動器的文件分配表信息。 【原型】void getfat(unsigned char driver,struct fatinfo *dtable)【位置】dos.h 【參見】getdfree,getfatd getfatd 【功能】得到文件分配表信息。 【原型】void getfatd(struct fatinfo *dtable)【位置】dos.h 【參見】getdfree,getfat getftime 【功能】得到文件的日期和時間。 【原型】int getftime(int handle,struct ftime *fftimep)【位置】dos.h 【說明】成功返回0,錯誤則返回-1,同時設置errno 【參見】setftime,open getpsp 【功能】得到程序分段的前綴。【原型】unsigned getsp(void)【位置】dos.h 【說明】適用于MS DOS 3.0或者更新的版本。【參見】_psp,getenv gettime 【功能】得到系統時間。 【原型】void gettime(struct time *timep)【位置】dos.h 【參見】settime,getdate Turbo C函數 getvect 【功能】得到中斷扇區。 【原型】void interrupt(*getvect(int intr_num))()【位置】dos.h 【說明】返回在intr_num中斷扇區中保存的一個4字節樹脂。【參見】setvect,disable,enable getverify 【功能】得到校驗狀態。 【原型】int getverify(void)【位置】dos.h 【說明】如果校驗標志關閉則返回0,如果校驗標志打開則返回1。【參見】setverify harderr 【功能】建立一個硬盤錯誤句柄。 【原型】void harderr(int(*(handler)))【位置】dos.h 【說明】當MS DOS出現致命錯誤(int 0x24)時,掉用句柄指向的函數。【參見】hardresume.hardretn,longjmp hardresume 【功能】硬件錯誤句柄函數。 【原型】void hardresume(int axret)【位置】dos.h 【說明】harderr建立的錯誤句并可以將執行控制權返回給通過這個函數發布致命錯誤的MS DOS程序。Axret中的數值返回給MS DOS(0表示忽略,1表示重試,2表示退出)【參見】hardretn hardretn 【功能】硬件錯誤句柄函數。 【原型】void hardretn(int retn)【位置】dos.h 【說明】調用該函數之后,harderr建立的錯誤句柄可以直接返回應用程序。Retn中的數值返回到用戶程序中,覆蓋生成致命錯誤的MS DOS函數返回的正常值。【參見】hardresume inp 【功能】從硬件端口讀取一個字節?!竞暝汀縤nt inp(int portid)【位置】dos.h 【參見】inport,inporth inport 【功能】從硬件端口讀取一個詞。【原型】int inport(int portid)【位置】dos.h 【參見】inportb,outport inportb 【功能】從硬件端口讀取一個字節。 【原型】unsigned char inportb(int portid)【位置】dos.h Turbo C函數 【參見】inport,outportb int86 【功能】常用的8086軟件中斷。 【原型】int int86(int intno,union REGS *inregs,union REGS *outregs)【位置】dos.h 【說明】該函數將保存在inregs中的數值裝載到CPU寄存器中,發出中斷intno,然后在outregs中保存結果CPU寄存器?!緟⒁姟縤nt86x,intdos,intr int86x 【功能】常用的8086軟件中斷接口。【原型】int int86x(int intno,union REGS *inregs,union REGS *outregs,struct SREGS *segregs)【位置】dos.h 【說明】該函數將inregs和segregs中的數值裝載到CPU寄存器中,發布中斷intno,然后在outregs和segregs中保存最終的CPU寄存器數值。【參見】int86,intdosx,intr intdos 【功能】常用的MS DOS中斷接口。 【原型】int intdos(union REGS *inregs,union REGS *outregs)【位置】dos.h 【說明】該函數將inregs中保存的數值裝載到CPU寄存器中,發布MS DOS中斷(int 33或者0x21),然后在outregs中保存最終的CPU寄存器樹脂。【參見】indosx,int86,intr,bdos,bdosptr intdosx 【功能】常用的MS DOS中斷接口。 【原型】int intdosx(union REGS *inregs,union REGS *outregs,struct SREGS *segregs)【位置】dos.h 【說明】intdosx將inregs和segregs中的數值裝載到CPU寄存器中,發布DOS中斷(int 0x21),然后在outregs/segregs中保存最終的CPU寄存器數值。【參見】intdos,int86x,intr,bdos,bdosptr intr 【功能】轉換8086軟件中斷的借口。 【原型】void intr(int intno,struct REGPACK *preg)【位置】dos.h 【說明】該函數將preg中保存的數值裝載到CPU寄存器中,發布中斷intno,然后在preg中保存結果CPU寄存器的數值。 【參見】int86,int86x,intdos keep 【功能】程序退出運行,但是繼續駐留內存。 【原型】void keep(unsigned char status,unsigned size)【位置】dos.h 【說明】該函數沒有返回。它只是退到DOS狀態,同時在status中保存返回值,但是程序仍然駐留在內存中。程序在中斷運行之前被設置成為size大小的段落,剩余的程序內存則返回給DOS?!緟⒁姟緼BORT,EXIT,EXEC,SPAWN,SYSTEM MK_FP 【功能】創建一個遠端指針。 【原型】void far *MK_FP(se,off) Turbo C函數 【位置】dos.h 【參見】movedata,segread nosound 【功能】關閉PC喇叭。 【原型】void nosound(void)【位置】dos.h 【參見】sound,delay outp 【功能】在硬件端口寫一個字節。 【宏原型】int outp(int portid,int byte_value)【位置】dos.h 【參見】outport,outportb outport 【功能】在硬件端口輸出一個詞。 【原型】void outport(int portid,int value)【位置】dos.h 【參見】inport,outportb outportb 【功能】在硬件端口輸出一個字節。 【原型】void outportb(int portid,unsigned char value)【位置】dos.h 【參見】inportb,outport parsfnm 【功能】解析文件名稱,然后創建文件控制塊(FCB)。 【原型】char *parsfnm(const char *cmdline,struct fcb *fcb,int option)【位置】dos.h 【說明】成功解析一個文件名稱之后,parsfnm返回一個指針,指向文件名稱末尾的下一個字節。如果在解析文件名稱時出現任何錯誤,則返回0。peek 【功能】返回由segment:offset指定內存位置中的詞?!驹汀縤nt peek(unsigned segment,unsigned offset)【位置】dos.h 【參見】peekb,poke peekb 【功能】返回由segment:offset指定內存位置中的字節。【原型】char peekb(unsigned segment,unsigned offset)【位置】dos.h 【參見】peek,pokeb poke 【功能】在由segment:offset指定內存位置中保存一個整數值。【原型】void poke(unsigned segment,unsigned offset,int value)【位置】dos.h 【參見】peek,pokeb pokeb 【功能】存值到一個指定存儲單元。 【原型】void pokeb(unsigned segment,unsigned offset,int value) Turbo C函數 【位置】dos.h 【參見】peek,poke randbrd 【功能】讀取隨即數據塊。 【原型】int randbrd(struct fcb *fcb,int rcnt)【位置】dos.h 【說明】根據randbrd操作的結果,將返回如下數值。0 讀入所有記錄。到達文件結尾,已經讀入最后一條記錄。2 循環讀入記錄。到達文件結尾,最后一條記錄尚未讀入?!緟⒁姟縭andwr randbwr 【功能】使用文件控制塊(FCB)隨機寫入數據塊?!驹汀縤nt randbwr(struct fcb *fcb,int rcnt)【位置】dos.h 【說明】根據randbwr操作的結果,將返回如下數值。0 寫入所有記錄。沒有足夠的空間寫入。2 循環寫入。【參見】randbrd segread 【功能】讀入段寄存器。 【原型】void segread(struct SREGS *segp)【位置】dos.h 【參見】FP_OFF,intdosx,int86x setblock 【功能】改變原先分配的數據塊大小。 【原型】int setblock(unsigned segx,unsigned newsize)【位置】dos.h 【說明】對調用allocmem函數分配的數據塊使用。成功時返回-1。如果出現錯誤,則返回可能出現的最大數據塊的大小,并且設置_doserrno?!緟⒁姟縜llocmem,freemem setcbrk 【功能】設置控制中斷。 【原型】int setcbrk(int cbrkvalue)【位置】dos.h 【說明】如果cbrkvalue等于1,則每次系統調用都需要檢查Ctrl-Break。如果等于0,則只在控制臺、打印機和通信I/O調用地進行檢查。返回值通過cbrkvalue傳遞。setdate 【功能】設置MS DOS日期。 【原型】void setdate(struct fate *date *datep)【位置】dos.h 【參見】settime,getdate setdta 【功能】設置磁盤轉換地址。 Turbo C函數 【原型】coid setdta(char far *dta)【位置】dos.h settime 【功能】設置系統時間。 【原型】void settime(struct time *timep)【位置】dos.h 【參見】getdate,gettime setvect 【功能】設置中斷扇區入口。 【原型】void setvect(int intreeuptno,void interrupt(*isr)())【位置】dos.h 【說明】isr指向出現中斷號碼為interuptno的中斷時調用的函數。如果isr為一個C函數,就應當使用interrupt關鍵字進行定義。【參見】getvect setverify 【功能】設置校驗狀態。 【原型】void setverify(int value)【位置】dos.h 【說明】如果value等于1,則每次磁盤寫操作之后都將進行一次操作以便確保正確結果(0則表示不在隨后進行讀操作)?!緟⒁姟縢etverify sleep 【功能】程序執行掛起一段時間。 【原型】void sleep(unsigned seconds)【位置】dos.h 【參見】delay sound 【功能】將PC喇叭打開,并且設置到某個頻率?!驹汀縱oid sound(unsigned frequency)【位置】dos.h 【說明】頻率以赫茲為單位(每秒的圈數)?!緟⒁姟縩osoubd,delay unixtodos 【功能】將UNIX格式的日期和時間轉換成DOS格式。 【原型】void unixtodos(long time,struct date *d,struct time *t)【位置】dos.h 【參見】dostounix unlink 【功能】刪除一個文件。 【原型】int unlink(const char *filename)【位置】dos.h,io.h,stdio.h 【說明】如果filename指定的文件屬性為只讀,澤unlink操作失敗。首先需要調用chmod函數改變文件屬性。成功返回0,錯誤返回-1。【參見】chmod,remove FLOAT.H _clear87 18 Turbo C函數 【功能】清除浮點狀態。 【原型】unsigned int _clear87(void)【位置】float.h 【說明】返回值的位表示舊的浮點狀態。有關狀態的詳細解釋,參見float.h文件中定義的常量?!緟⒁姟縚fpreset,_status87 _control87 【功能】改變浮點控制詞。 【原型】unsigned int _control87(unsigned int new,unsigned int mask)【位置】float.h 【說明】如果mask中的某一位為1,則new中的相應位保持控制詞中相同位的新數值。如果mask位0,則說明控制詞沒有改變。 【參見】_clear87,_fpreset,status87,CWDEFAULT _fpreset 【功能】重新初始化浮點數學包。【原型】void _fpreset(void)【位置】float.h 【說明】該函數必須與exec、spawn、system等函數聯合使用,因為子進程可能改變父進程的浮點狀態。_status87 【功能】得到浮點狀態。 【原型】unsigned int _status87(void)【位置】float.h 【說明】返回值的位說明了浮點狀態。【參見】_clear87,_control87,_fpreset GRAPHICS.H bar 【功能】畫出一條欄目。 【原型】void far bar(int left,int top,int right,int bottom)【位置】graphics.hgraphics.h 【參見】bar3d,setfillstyle,rectangle bar3d 【功能】畫出一條3-D欄目。 【原型】void far bar3d(int left,int top,int right,int bottom,int depth,int topflag)【位置】graphics.h 【參見】bar circle 【功能】以(x,y)為圓心按照指定的半徑畫出一個圓?!驹汀縱oid far circle(int x,int y,int radius)【位置】graphics.h 【參見】arc cleardevice 【功能】清除圖形畫面。 【原型】void far cleardevice(void)【位置】graphics.h 【參見】clearviewport clearviewport Turbo C函數 【功能】清除當前可視區域?!驹汀縞learviewport(void)【位置】graphics.h 【參見】setviewport,cleardevice closegraph 【功能】關閉圖形系統。 【原型】void far closegraph(void)【位置】graphics.h 【參見】initgraph detecgraph 【功能】通過檢查硬件確定使用的圖形驅動程序和模式。 【原型】void far detectgraph(int far *graphdriver,int far *graphmode)【位置】graphics.h 【參見】initgraph,graphresult drawpoly 【功能】畫出一個多邊形的輪廓。 【原型】void far drawpoly(int numpoints,int far polypoints[])【位置】graphics.h 【說明】polypoints中包括一共numpoints對數值。其中每一對都給出了多邊形中一個頂點的x和y值。 【參見】fillpoly ellipse 【功能】畫出一條橢圓形的圓弧。 【原型】void far ellipse(int x,int y,int stangle,int endangle,int xradius,int yradius)【位置】graphics.h 【說明】中心點在(x,y),stangle和endangle表示一角度為單位的起始角和終止角。Xradius和yradius表示水平軸和垂直軸?!緟⒁姟縜rc,circle,fillellipse fillellipose 【功能】畫出橢圓形圓弧,并填充。 【原型】void far fillllipse(int x,int y,int xradius,int yradius)【位置】graphics.h 【說明】使用(x,y)作為中心點,然后使用當前的填充模式填充圓弧。Xradius和yradius表示水平軸和垂直軸。 【參見】arc,circle,ellipse,pieslice fillpoly 【功能】畫出一個多邊形,并填充。 【原型】void far fillpoly(int numpoints,int far polypoints[])【位置】graphics.h 【說明】polypoints中包含有numpoints對數值。其中每一對給出了多邊形一個頂點的x值和y值?!緟⒁姟縟rawpoly,fill_patterns,floodfill,graphresult,setfillstyle floodfill 【功能】填充一個有界區域范圍。 【原型】void far floodfill(int x,int y,int border)【位置】graphics.h 【參見】drawpoly,fillpoly,fill_patterns,graphresult,setfillstyle Turbo C函數 getarccoords 【功能】得到最后一次調用arc的坐標值。 【原型】void far getaerccoords(struct arccoordstype far *arccoords)【位置】graphics.h 【參見】arc getaspectratio 【功能】得到當前圖形模式的縱橫比。 【原型】void far getaspectratio(int far *xasp,int far *yasp)【位置】graphics.h 【說明】are及類似函數使用縱橫比令圓圈更加圓,而不會像橢圓。Yasp應當為10000。當象素為 【原型】int far getbkcolor(void)【位置】graphics.h 【參見】setbkcolor,getcolor,getpalette getcolor 【功能】返回當前畫筆的顏色?!驹汀縤nt far getcolor(void)【位置】graphics.h 【參見】getbkcolor,setcolor,getmaxcolor,getpalette getdefaultpalette 【功能】返回調色板定義結構。 【原型】struct palettetype *far getdefaultpalette(void)【位置】graphics.h 【說明】返回一個指針,指向調用initgraph初始化時,當前驅動程序的默認調色板結構?!緟⒁姟縢etpalette,initgraph getdrivername 【功能】返回一個指針,指向當前圖形驅動程序的名稱?!驹汀縞har *far getdrivername(void)【位置】graphics.h 【說明】返回的指針指向標識當前驅動器程序的字符串,從而可以探測到硬件適配器?!緟⒁姟縤nitgraph getfillpattern 【功能】將用戶定義的填充模式復制到內存中。 【原型】void far getfillpattern(char far *pattern)【位置】graphics.h 【參見】getfillsettings,setfillpattern,fill_patterns getfillsettings 【功能】得到當前填充模式及其顏色的有關信息。 【原型】void far getfillsettings(struct fillsettingstype far *fillinfo)【位置】graphics.h 【參見】floodfill, fillpoly, setfillstyple, pieslice, setfillpattern, bar3d, bar, getfillpattern getgraphmode Turbo C函數 【功能】返回當前圖形模式。 【原型】int far getgraphmode(void)【位置】graphics.h 【說明】必須先調用initgraph或者setgraphmode?!緟⒁姟縮etmoderange,restorectrtmode getmage 【功能】將制定區域的位圖保存到內存中。 【原型】void far getimage(int left,int top,int right,int bottom,void far *bitmap)【位置】graphics.h 【參見】imagesize,putimage getlinesettings 【功能】得到當前的直線樣式、模式和粗細。 【原型】void far getlinesettings(struct linesettingstype far *lineinfo)【位置】graphics.h 【參見】setlinestyle getmaxcolor 【功能】返回最大顏色值。 【原型】int far getmaxcolor(void)【位置】graphics.h 【參見】getbcolor,getpalette,getcolor,setcolor getmaxmode 【功能】返回當前驅動程序的最大圖形模式號?!驹汀縤nt far getmaxmode(void)【位置】graphics.h 【說明】getmaxmode可以得到當前裝載的圖形驅動程序的最大模式號。適用于所有驅動程序—包括Borland驅動程序及其他驅動程序?!緟⒁姟縢etmoderange getmaxx 【功能】返回畫面坐標的最大x值。【原型】int far getmaxx(void)【位置】graphics.h 【參見】getx getmaxy 【功能】返回畫面坐標的最大y值?!驹汀縤nt far getmaxy(void)【位置】graphics.h 【參見】getx getmodename 【功能】返回指針,指向圖形模式的名稱。 【原型】char *far getmodename(int mode_number)【位置】graphics.h 【說明】返回的指針指向mode_number指定模式的名稱(字符串)?!緟⒁姟縢etmaxmode,getmoderange getmoderange 【功能】得到指定圖形驅動器的模式范圍。 【原型】void far getmoderange(int graphdriver,int far *lomode,int far *himode) Turbo C函數 【位置】graphics.h 【參見】initgraph,getmaxmode,setgraphmode,getgraphmode.getpalette 【功能】得到當前調色板的有關信息。 【原型】void far getpalette(struct palettetype far *palette)【位置】graphics.h 【參見】setpalette,setallpalette,getbkcolor,getdefaultpalette,getcolor getpalettesize 【功能】返回調色板表的大小。 【原型】int far getpalettesize(void)【位置】graphics.h 【說明】getpalettesize返回當前圖形驅動程序模式允許的調色板條目的數目?!緟⒁姟縮etpalette,setallpalette getpixel 【功能】得到某個指定向素的顏色。 【原型】unsigned far getpixel(int x,int y)【位置】graphics.h 【參見】putpixel,getimage gettextsettings 【功能】得到當前圖形文字字體的有關信息。 【原型】void far gettextsettings(struct textsettingstype far *texttypeinfo)【位置】graphics.h 【參見】outtext, outtextxy, textheight, textwidth, settextjustify, settextsyle, registerbgifont getviewsettings 【功能】得到當前視窗的有關信息。 【原型】void far getviewsettings(struct viewporttype far *viewport)【位置】graphics.h 【參見】setviewport,clearviewport getx 【功能】返回當前位置的x坐標?!驹汀縤nt far getx(void)【位置】graphics.h 【說明】返回數值與視窗相關。 【參見】gety,moveto,getviewsettings gety 【功能】返回當前位置的y坐標?!驹汀縤nt far gety(void)【位置】graphics.h 【說明】返回數值與視窗相關。 【參見】getx,moveto,getviewsettings graphdefaults 【功能】將所有圖形設置重值為默認值。【原型】void far graphdefaults(void)【位置】graphics.h 【參見】initgraph,setgraphmode Turbo C函數 grapherrormsg 【功能】返回一個指針,指向錯誤消息字符串?!驹汀縞har *far grapherrormsg(int errorcode)【位置】graphics.h 【說明】返回指針指向的字符串與graphresult返回值相關。【參見】graphresult _graphfreemem 【功能】用戶申請重新分配圖形內存。 【原型】void far _graphfreemem(void far *ptr,unsigned size)【位置】graphics.h 【說明】圖形函數庫中的程序調用該函數來釋放內存??梢宰约菏褂胈graphgetmem和_graphfreemem函數來控制內存分配。【參見】_graphgetmem _gaphetmem 【功能】用戶申請重新分配圖形內存。 【原型】void far *far _graphgetmem(unsigned size)【位置】graphics.h 【說明】圖形函數庫中的程序調用該函數來釋放內存??梢宰约菏褂胈graphgetmem和_graphfreemem函數來控制內存分配?!緟⒁姟縚graphfreemem graphresult 【功能】返回最后一次失敗圖形操作的錯誤代碼。【原型】int far graphresult(void)【位置】graphics.h 【說明】返回最后一次報告錯誤圖形的錯誤代碼,并且將錯誤等級重置為grOK?!緟⒁姟縢rapherrormsg imagesize 【功能】返回存儲位圖所需的字節數。 【原型】unsigned far imagesize(int left,int top,int right,int bottom)【位置】graphics.h 【說明】如果選定圖形所需的大小大于等于64k-1個字節,則返回0xFFFF?!緟⒁姟縢etimage,putimage initgraph 【功能】初始化圖形系統。 【原型】void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver)【位置】graphics.h 【參見】getgraphmode , closegraph , detectgraph , _graphgetmem , getdrivername , restorecrtmode,setgraphbufsize,registerbgidriver,graphresult,installuserdriver installuserdriver 【功能】按照設備驅動程序。 【原型】int far installuserdriver(char far *name,int huge(*detect)(void))【位置】graphics.h 【說明】name表示設備驅動程序的文件名稱(*.bgi),detect指向initgraph使用autodetect選項調用的函數。 【參見】initgraph,registerbgidriver Turbo C函數 installuserfont 【功能】裝載一個字體文件。 【原型】int far installuserfont(char far *name)【位置】graphics.h 【說明】name表示圖形函數還沒有識別的字體文件(擴展名為.chr)DOS文件名稱。installuserfont返回一個字體ID號。選擇新字體時,使用該ID號調用settextstyle?!緟⒁姟縮ettextstyle line 【功能】在兩個指定點之間畫出一條直線。【原型】lint(int x1,int y1,int x2,int y2)【位置】graphics.h 【說明】使用當前顏色、線條樣式和線條粗細從(x1,y1)畫一條直線到(x2,y2)?!緟⒁姟縧ineto,linerel,setcolor,getlinesettings linerel 【功能】從當前位置(CP)畫一條一直長度的直線?!驹汀縧inerel(int dx,int dy)【位置】graphics.h 【說明】使用當前顏色、線條樣式和線條粗細。 【參見】line,lineto,setcolor,getcolor,getlinesettings lineto 【功能】從當前位置(CP)到(x,y)之間畫一條直線?!驹汀縱oid far lineto(int x,int y)【位置】graphics.h 【參見】line,linerel,setcolor,getlinesettings,setwritemode moverel 【功能】從當前位置(CP)移動一段距離?!驹汀縨overel(int dx,int dy)【位置】graphics.h 【參見】moveto moveto 【功能】從當前位置(CP)移動到(x,y)點?!驹汀縱oid far moveto(int x,int y)【位置】graphics.h 【參見】moverel outtext 【功能】在視窗中(圖形模式)顯示一個字符串?!驹汀縱oid far outtext(char far *textstring)【位置】graphics.h 【參見】gettextsettings,texthright,textwidth,outtextxy outtextxy 【功能】在指定位置(圖形模式)發送一個字符串。 【原型】void far outtextxy(int x,int y,char far *textstring)【位置】graphics.h 【參見】gettextsettings,textherght,textwidth,outtext pieslice 【功能】畫出扇形區并加以填充。 Turbo C函數 【原型】void far pieslice(int x,int y,int stangle,int endangle,int radius)【位置】graphics.h 【參見】setfillstyle,sector,fill_patterns,fillellipse,graphresult putimage 【功能】在屏幕上輸出一副位圖。 【原型】void far putimage(int left,int top,void far *bitmap,int top)【位置】graphics.h 【說明】bitmap指向一副位圖,該位圖通常由getimage函數創建。Op的數值說明如何在(left,top)點將圖像與區域中的當前內容結合起來。【參見】getimage putpixel 【功能】在指定點上畫一個像素。 【原型】void far putpixel(int x,int y,int pixelcolor)【位置】graphics.h 【參見】getpixel,putimage rectangle 【功能】畫出一個矩形(圖形模式)。 【原型】void far rectangle(int left,int top,int right,int bottom)【位置】graphics.h 【說明】使用當前線條樣式、線條粗細和顏色?!緟⒁姟縝ar,setlinestyle,setcolor registerbgidriver 【功能】注冊鏈入的圖形驅動程序。 【原型】int registerbgidriver(void(*driver)(void))【位置】graphics.h 【說明】通知圖形系統鏈接時設備驅動程序指向的參數和驅動程序。【參見】initgraph,registerbgifont,installuserdriver registerbgifont 【功能】注冊鏈入的字體代碼。 【原型】int registerbgifont(void(*font)(void))【位置】graphics.h 【說明】通知圖形系統連接時指向的字體?!緟⒁姟縤nitgraph,registerbgidriver restorecrtmode 【功能】將屏幕模式恢復到前一次initgraph的設置?!驹汀縱oid far restorecrtmode(void)【位置】graphics.h 【參見】initgraph,setgraphmode sector 【功能】畫出橢圓形的扇形區并加以填充。 【原型】void far sector(int x,int y,int stangle,int endangle,int xradius,int yradius)【位置】graphics.h 【說明】x和y定義出中心點,stangle和endangle則定義起始和終止角。Xradius和yradius表示水平和垂直半徑。 【參見】pieslice,setfillstyle setactivepage 26 Turbo C函數 【功能】為圖形輸出設置活動頁面。 【原型】void far setactivepage(int page)【位置】graphics.h 【說明】后續的圖形輸出就指向該顯示頁面。該頁面可能不是實際顯示的可視頁面?!緟⒁姟縮etvisualpage setallpalette 【功能】將所有調色板的顏色改為指定顏色。 【原型】void far setallpalette(struct palettetype far *palette)【位置】graphics.h 【參見】setpalette,getpalettesize,getpalette,setcolor,setbkcolor,graphresult setaspectratio 【功能】設置圖形模式的縱橫比。【原型】void far setaspectratio 【位置】graphics.h 【說明】are及類似函數使用縱橫比令圓圈更加圓,而不會像橢圓。yasp應當為10000。當象素為 【參見】setpalette,setcolor,getbkcolor setcolor 【功能】設置當前畫筆顏色。 【原型】void far setcolor(int color)【位置】graphics.h 【參見】getcolor,setbkcolor,setpalette,graphresult setfillpattern 【功能】選擇一個用戶自定義的填充模式。 【原型】void far setfillpattern(char far *upattern,int color)【位置】graphics.h 【說明】upattern指向一個8字節的區域,其中定義了一個8*8位的模式?!緟⒁姟縡ill_patterns,getfillpattern,getfillsettings,setfillstyle setfillstyle 【功能】設置填充模式和顏色。 【原型】void far setfillstype(int pattern,int color)【位置】dos.h 【參見】get,fillstype setgraphbufsize 【功能】改變內部圖形緩沖區的大小。 【原型】unsigned far setgraphbufsize(unsigned bufsize)【位置】graphics.h 【說明】必須在調用initgraph之前調用該函數?!緟⒁姟縤nitgraph,_graphgetmem setgraphmode 【功能】系統設置為圖形模式,同時清屏。 Turbo C函數 【原型】void far setgraphmode(int mode)【位置】graphics.h 【參見】initgraph,getgraphmode,restorecrtmode,graphresult setlinestyle 【功能】設置當前的線條樣式、寬度或者模式。 【原型】void far setlinestyle(int linestyle,unsigned upattern,int thickness)【位置】graphics.h 【說明】可以設置使用line,lineto,tectangle,drawpoly,aec,circle,ellipse,pieslice等函數畫的所有線條樣式。 【參見】getlinesettings,graphresult setpalette 【功能】改變一種調色板顏色。 【原型】void far setpalette(int colornum,int color)【位置】graphics.h 【參見】getpalette, graphresult, setallpalette, getpalettesize, setcolor, setrgbcolor, setbkcolor setrgbcolor 【功能】為VGA和IBM-8514驅動程序設置調色板條目。 【原型】void far setrgbcolor(int colornum,int red,int green,int blue)【位置】graphics.h 【說明】colornum表示需要設置的調色板條目,red、green和blue用來定義顏色?!緟⒁姟縮etpalette,setrgbpalette setrgbpalette 【功能】為IBM-8514圖形卡定義顏色 【原型】void far setrgbpalette(int colornum,int red,int green,int blue)【位置】graphics.h 【說明】colornum表示需要載入的調色板條目,從0~255之間的數字,red、green和blue負責定義顏色。這些數值僅僅使用低位字節,而且只有最重要的6位載入調色板?!緟⒁姟縮etrgbcolor,setpalette settextjustify 【功能】設置圖形模式下的文本對齊方式。 【原型】void far settextjustify(int horiz,int vert)【位置】graphics.h 【說明】該函數影響outtext等函數輸出的文本,是文本在水平和垂直方向對齊。settextstyle 【功能】設置當前文本屬性。 【原型】void far settextstyle(int font,int direction,int charsize)【位置】graphics.h 【參見】settextjustify,installuserfont,gettextsettings,graphresult setusercharsize 【功能】用戶為漸入字符自定義的字符放大因子。 【原型】void far setuserchasize(int multix,int divx,int multy,int divy)【位置】graphics.h 【參見】gettextsettings,graphresult setviewport 【功能】設置圖形輸出的當前視口。 Turbo C函數 【原型】void far setviewport(int left,int top,int right,int bottom,int clip)【位置】graphics.h 【參見】getviewsettings,graphresult setvisualpage 【功能】設置可視圖形頁碼。 【原型】void far setvisualpage(int page)【位置】graphics.h 【說明】有些顯示適配器存在多個內存頁面,可視頁面是真正在屏幕上顯示的頁面。圖形輸出函數將輸出寫入由setactivepage定義的活動頁面中。【參見】setactivepage,graphresult setwritemode 【功能】設置圖形畫線模式。 【原型】void far setwritemode(int mode)【位置】graphics.h 【說明】如果mode為0,則線條覆蓋屏幕上當前的內容。如果mode為1,那么線條向素和已經在屏幕上的象素之間執行一個異域操作(XOR)?!緟⒁姟縧ingto textheight 【功能】以象素位單位,返回一個字符串的高度?!驹汀縤nt far textheight(char far *textstring)【位置】graphics.h 【說明】textwidth與圖形函數一起使用,例如outtext 【參見】gettextsettings,textwidth,outtext textwidth 【功能】以象素位單位,返回一個字符串的寬度?!驹汀縤nt far textwidth(char far *textstring)【位置】graphics.h 【說明】textwidth與圖形函數一起使用,例如outtext 【參見】gettextsettings,textheight,outtext IO.H access 【功能】 確定文件是否可以訪問。 【原型】int access(const char *filename,int amode)【位置】io.h 【說明】amode=0檢查文件是否存在 amode=2檢查文件是否有寫權限 如果允許執行請求的訪問,則返回0;否則返回數值-1,并且設置errno _chmod 【功能】改變訪問模式。 【原型】int _chmod(const char *filename,int func[,int attrib])【位置】io.h 【說明】如果func等于0,則_chmod返回文件屬性;如果func等于1,則設置屬性。成功完成之后,_chmod返回文件屬性;否則返回數值-1,并設置errno 【參見】chmod chomd 【功能】改變訪問模式。 Turbo C函數 【原型】int chmod(const char *filename,int amode)【位置】io.h 【說明】成功改變文件訪問模式之后,chmode返回0;否則chmode返回數值-1 【參見】_chmod chsize 【功能】改變文件大小。 【原型】int chsize(int handle,long size)【位置】io.h 【說明】成功則chsize返回0,失敗則返回-1,同時設置errno 【參見】cheat fopen _close 【功能】關閉文件句柄。 【原型】int _close(int handle)【位置】io.h 【說明】成功完成之后,close返回0;否則返回-1,同時設置errno 【參見】close close 【功能】關閉文件句柄。 【原型】int close(int handle)【位置】io.h 【說明】成功完成之后,close返回0;否則返回-1,同時設置errno 【參見】_close _creat 【功能】創建一個新文件,或者覆蓋一個舊文件?!驹汀縤nt _creat(const char *path,int attrib)【位置】io.h 【說明】creat按照_fmode規定的模式打開文件。_creat則總是按照二進制模式打開文件。成功完成之后,返回新文件句柄;否則返回-1,同時設置errno 【參見】creat creat 【功能】創建一個新文件,或者覆蓋一個舊文件。【原型】int creat(const char *path,int attrib)【位置】io.h 【說明】creat按照_fmode規定的模式打開文件。_creat則總是按照二進制模式打開文件。成功完成之后,返回新文件句柄;否則返回-1,同時設置errno 【參見】_creat creatnew 【功能】創建一個新文件。 【原型】int creatnew(const char *path,int attrib)【位置】io.h 【說明】creatnew與_creat的功能基本一致,但是當文件已經存在時,creatnew將返回一個錯誤。該函數使用于MS DOS 3.0或者更新的版本 creattemp 【功能】在文件名指定的目錄中創建一個文件。 【原型】int creattemp(const char *path,int attrib)【位置】io.h Turbo C函數 【說明】該函數與_creat類似,但是文件名稱為路徑名稱,必須以結束。文件名稱中應當包括完整的文件名。該函數使用于MS DOS 3.0或者更新的版本 【參見】creat,_creat dup 【功能】復制一個文件句柄。【原型】int dup(int handle)【位置】io.h 【說明】成功完成之后,dup返回一個新文件的句柄;否則dup返回-1,同時設置errno 【參見】dup2 dup2 【功能】復制一個文件句柄oldhandle,新文件句柄為newhandle?!驹汀縤nt dup2(int oldhandle,int newhandle)【位置】io.h 【說明】成功返回0,錯誤返回-1 【參見】dup eof 【功能】檢查文件結尾標志?!驹汀縤nt eof(int handle)【位置】io.h 【說明】該函數的返回值及其含義如下: 返回值 含義 1 文件結束 0 文件沒有結束-1 出錯,設置errno 【參見】ferror,perror,EOF filelength 【功能】得到文件大小的字節數。 【原型】long filelength(int handle)【位置】io.h 【說明】出現錯誤時返回-1,同時設置errno 【參見】open,lseek gettime 【功能】得到文件的日期和時間。 【原型】int gettime(int handle,struct ftime *fftimep)【位置】io.h 【說明】成功返回0,錯誤則返回-1,同時設置errno 【參見】setftime,open loctl 【功能】控制I/O設備。 【原型】int ioctl(int handle,int func[,void *argdx,int argcx])【位置】io.h 【說明】func為0或者1時,返回值表示設備信息(IOCTL調用DX)。Func數值從2到5時,返回值為實際傳遞的字節數。Func數值為6或者7時,返回值為設備狀態。 在任何情況下如果出現錯誤,則返回數值-1,同時設置errno。isatty Turbo C函數 【功能】檢查設備類型。 【原型】int isatty(int handle)【位置】io.h 【說明】如果為字符設備,則isatty返回一個非0整數。lock 【功能】設置文件共享鎖定,控制并發的文件訪問。 【原型】int lock(int handle,long offset,long length)【位置】io.h 【說明】防止另一個程序讀寫訪問從offset地址開始length個字節長的區域。調用成功返回0,調用失敗返回-1?!緟⒁姟縪pen,unlock lseek 【功能】移動讀/寫文件指針。 【原型】long lseek(int handle,long offset,int fromwhere)【位置】io.h 【說明】返回從文件起始位置開始新的文件位置,以字節為單位。錯誤返回01L,同時設置errno?!緟⒁姟縡open,fseek,ftell,gets,setbuf,ungetc _open 【功能】打開文件進行讀寫。 【原型】int _open(const char *filename,int oflags)【位置】io.h 【說明】成功完成之后,_open返回一個文件句柄,否則返回-1。【參見】open open 【功能】打開一個文件進行讀寫。 【原型】int open(const char *pathname,int access[,unsigned mode])【位置】io.h 【說明】成功完成之后,open返回一個文件句柄,否則返回-1,同時設置errno。【參見】close,creat,_creat,dup,fopen,lseek,_open,read,sopen,write _read 【功能】從文件中讀取。 【原型】int _read(int handle,void *buf,unsigned len)【位置】io.h 【說明】返回讀入的字節數,遇到文件結尾返回0,出現錯誤時返回-1,同時設置errno。【參見】read,_open,_write read 【功能】從文件中讀取。 【原型】int read(int handle,void *buf,unsigned len)【位置】io.h 【說明】成功完成之后,返回一個整數說明緩存區中放置的字節數,如果文件在文本模式下打開,read不會計算返回讀取字節數中的carriage或者Ctrl+Z字符。出現錯誤時返回-1,同時設置errno?!緟⒁姟縚read,open,write setftime 【功能】獲得文件的日期和時間。 【原型】int settime(int handle,struct ftime *ftimep)【位置】io.h Turbo C函數 【說明】成功返回0,否則返回-1?!緟⒁姟縢ettime setmode 【功能】設置一個打開文件的模式。 【原型】int setmode(int handle,int amode)【位置】io.h 【說明】成功返回0,否則返回-1?!緟⒁姟縪pen,creat sopen 【宏原型】sopen(path,access,shflag,mode)【位置】io.h 【說明】在共享模式下打開文件??梢杂谂f版本的Turbo C和其他編譯程序兼容?!緟⒁姟縪pen tell 【功能】得到文件指針的當前位置?!驹汀縧ong tell(int handle)【位置】io.h 【說明】返回當前文件指針的位置,出錯則返回-1。【參見】fseek unlink 【功能】刪除一個文件。 【原型】int unlink(const char *filename)【位置】io.h 【說明】如果filename指定的文件屬性為只讀,則unlink操作失敗。首先需要調用chmod函數改變文件屬性。 成功返回0,錯誤返回-1?!緟⒁姟縞hmod,remove unlock 【功能】釋放文件共享的鎖定,控制并發訪問。 【原型】int unlock(int handle,long offset,long length)【位置】io.h 【說明】成功返回0,錯誤返回-1。【參見】lock _write 【功能】寫入一個文件。 【原型】int _weite(int handle,void *buf,unsigned nbyte)【位置】io.h 【說明】返回寫入的字節數目,出現錯誤則返回-1。【參見】write write 【功能】寫入一個文件。 【原型】int weite(int handle,void *buf,unsigned nbyte)【位置】io.h 【說明】返回寫入的字節數目,出現錯誤則返回-1。【參見】creat,open,read,_write,lseek MATH.H Turbo C函數 abs 【功能】得到一個整數的絕對值,abs(x)中的x表示一個int值?!驹汀縤nt abs(int x)【位置】math.h,stdlib.h acos 【功能】反余弦函數。 【原型】double acos(double x)【位置】math.h,stdlib.h 【說明】返回值從0到π?!緟⒁姟縯rig,hyperb asin 【功能】反正弦函數。 【原型】double asin(double x)【位置】math.h 【說明】返回值范圍從-π/2到π/2 【參見】trig,hyperb stan 【功能】反正切函數。 【原型】double atan(double x)【位置】math.h 【說明】返回值范圍從-π/2到π/2 【參見】trig,hyperb atan2 【功能】y/x的反正弦函數。 【原型】double atan2(double y,double x)【位置】math.h 【說明】返回值范圍從-π到π 【參見】trig,hyperb atof 【功能】將一個字符串轉換成浮點數?!驹汀縟ouble atof(const char *s)【位置】math.h 【說明】返回s經過轉換之后的值,如果s不能轉換則返回0?!緟⒁姟縜toi,atol,ecvt,sscanf,strtod cabs 【功能】得到一個復數的絕對值。 【原型】double cabs(struct complex znum)【位置】math.h 【說明】以雙精度返回znum的絕對值?!緟⒁姟縜bs,fabs,labs ceil 【功能】向上取整函數。 【原型】double ceil(double x)【位置】math.h 【說明】返回一個大于等于x的最小整數?!緟⒁姟縡loor 34 Turbo C函數 cos 【功能】余弦函數。 【原型】double cos(double x)【位置】math.h 【說明】x表示弧度,返回值范圍從-1到1?!緟⒁姟縯rig,hyperb cosh 【功能】雙曲余弦函數。 【原型】double cosh(double x)【位置】math.h 【參見】hyperb,trig exp 【功能】計算e的x次方?!驹汀縟ouble exp(double x)【位置】math.h 【參見】frexp,ldexp,log,pow fabs 【功能】得到一個浮點數的絕對值。【原型】double fabs(double x)【位置】math.h 【參見】abs,cabs,labs floor 【功能】向下取整函數。 【原型】double floor(double x)【位置】math.h 【說明】返回小于或等于x的最大整數?!緟⒁姟縞eil fmod 【功能】計算x/y的余數,也就是x對y求模?!驹汀縟ouble fmod(double x,double y)【位置】math.h 【參見】modf frexp 【功能】將一個雙精度數分解成為尾數和指數。 【原型】double frexp(double value,int *exponent)【位置】math.h 【說明】計算出x(x<1)和n,并且value=x*(2**n)。返回尾數x,并且令*exponent指向n?!緟⒁姟縠xp hypot 【功能】計算直角三角形的斜邊。 【原型】double hypot(double x,double y)【位置】math.h labs 【功能】長整數的絕對值?!驹汀縧ong labs(long x)【位置】math.h,stdlib.h Turbo C函數 【參見】abs,cabs ldexp 【功能】計算value乘以2為底的exp次冪得到的數值。【原型】double ldexp(double calue,int exp)【位置】math.h 【說明】返回值x=value*pow(2,exp)【參見】exp,frexp log 【功能】對數函數ln(x) 【原型】double log(double x)【位置】math.h 【參見】exp log10 【功能】對數函數log(10x) 【原型】double log10(double x)【位置】math.h 【參見】exp matherr 【功能】用戶可修改的數學錯誤處理程序?!驹汀縤nt matherr(struct exception *e)【位置】math.h 【說明】可以運用自己的matherr函數控制由math函數庫探測器的錯誤句柄。 Matherr應當返回一個非0值來說明可以解決問題,否則返回0。也可以更改返回值e,通過初始化調用方的接口返回。modf 【功能】將數字分離成為整數部分和分數部分?!驹汀縟ouble modf(double x,double *ipart)【位置】math.h 【說明】將參數值分解成兩部分:整數部分和分數部分。將整數部分保存在*ipart中,返回分數部分。poly 【功能】根據參數生成一個多項式。 【原型】double poly(double x,int degree,double coeffs[])【位置】math.h 【說明】在x中返回一個多項式的數值,次數為n,系數為coeffs[0],…coeffs[n]?!緟⒁姟?pow 【功能】冪函數,x的y次冪。 【原型】double pow(double x,double y)【位置】math.h pow10 【功能】冪函數,10的p次冪?!驹汀縟ouble pow10(int p)【位置】math.h sin 【功能】正弦函數。 Turbo C函數 【原型】double sin(double x)【位置】math.hmath.h 【說明】x表示弧度,返回值范圍為-1到1?!緟⒁姟縯rig sinh 【功能】雙曲正弦函數。 【原型】double sinh(double x)【位置】math.h 【參見】hyperb,trig sqrt 【功能】計算平方根。 【原型】double sqrt(double x)【位置】math.h 【說明】返回x的平方根。tan 【功能】正切函數。 【原型】double tan(double x)【位置】math.h 【說明】x表示弧度,返回x的正切值。【參見】trig,hyperb tanh 【功能】雙曲正切函數。 【原型】double tanh(double x)【位置】math.h 【說明】返回x的雙曲正切值?!緟⒁姟縯yperb,trig MEM.H memccpy 【功能】從scr位置拷貝n個字節到dest位置。 【原型】*memccpy(void *dest,const void *src,int c,size_t n)【位置】mem.h,string.h 【說明】該函數拷貝一個與c匹配的字節之后將停止操作,返回一個指針,指向dest位置上c之后的字節;否則將返回NULL。memchr 【功能】在數組s的前n個字節中查找字符c。 【原型】void *memchr(const void *s,int c,size_t n)【位置】mem.h,string.h 【說明】返回一個指針,指向s中出現的第一個c。如果在數組s中沒有出現c,則返回NULL。memcmp 【功能】比較兩個長度均為n的字符串s1和s2。 【原型】int memcmp(const void *s1,const void *s2,size_t n)【位置】mem.h,string.h 【說明】如果s1小于s2,返回一個小于0的數值,如果s1等于s2則返回一個0值,如果s1大于s2則返回一個大于0的數值。memcpy 【功能】從src位置拷貝n個字節到dest位置。 Turbo C函數 【原型】*memcpy(void *dest,const void *src,size_t n)【位置】mem.h,string.h 【說明】返回dest。memicmp 【功能】比較s1和s2的前n個字節,忽略大小寫差異。 【原型】int memicmp(const void *s1,const void *s2,size_t n)【位置】mem.h,string.h 【說明】如果s1小于s2,返回一個小于0的數值,如果s1等于s2則返回一個0值,如果s1大于s2則返回一個大于0的數值。memmove 【功能】從src拷貝n個字節到dest。 【原型】*memmove(void *dest,const void *src,size_t n)【位置】mem.h,string.h 【說明】返回s。memset 【功能】將s中的n個字節設置為c。 【原型】void *memset(void *s,int c,size_t n)【位置】mem.h,string.h 【說明】返回s。movedata 【功能】拷貝字節。 【原型】void movedata(unsigned srcset,unsigned crcoff,unsigned destseg,unsigned destoff,size_t n) 【位置】mem.h,string.h 【說明】從sreseg:srcoff拷貝n個字節到destseg:destseg:destoff?!緟⒁姟縁P_OFF,memcpy,segread movmem 【功能】從src移動一定長度的字節到dest。 【原型】void movmem(void *src,void *dest,unsigned length)【位置】mem.h vsetmem 【功能】將某個內存范圍設置為value。 【原型】void setmem(void *dest,int len,char value)【位置】mem.h,string.h 【參見】memset,strest PROCESS.H abort 【功能】異常終止某個進程。【原型】void abort(void)【位置】stdlib.h 【參見】atexit,assert,exit exec 【功能】載入并運行另外一個程序。 【原型】int execl(char *path,char *arg0,…,NULL) int execle(char *path,char *arg0,…,NULL,char **envp) int execlp(char *path,char *arg0,…) Turbo C函數 int execlep(char *path,char *arg0,…,NULL,char **envp) int execv(char *path,char *argv[]) int execve(char *path,char *argv[],char **envp) int execvp(char *path,char *argv[]) int execvp(char *path,char *argv[],char **envp)【位置】process.h 【說明】如果成功則exec函數不返回任何值。如果出現錯誤則exec函數返回-1,并且設置errno 【參見】spawn,searchpath,system exit 【功能】終止程序 【原型】void exit(int status)【位置】stdlib.h,process.h 【說明】終止程序之前,清空輸出緩存,關閉文件,并且退出調用的函數 【參見】abort,atexit,_exit spawn 【功能】spawn函數允許程序運行其他文件,并且在文件運行結束之后返回控制權。成功執行之后,返回子進程的退出狀態(0 表示正常終止)。如果某次子調用使用非0參數退出,則退出狀態設置為一個非0值。 如果進程沒有成功執行,則spawn函數將返回-1。 在使用如下這些spawn函數之前,首先需要了解將會出現多少個不同的參數?!驹汀縤nt spawnl(int mode,char *path,char *arg0,…,NULL) int spawnle(int mode,char *path,char *arg0,…,NULL ,char **env) int spawnlp(int mode,char *path,char *arg0,…,NULL) int spawnlpe(int mode,char *path,char *arg0,…,NULL ,char **env) int spawnv(int mode,char *path,char *arg[]) int spawnve(int mode,char *path,char *arg[],char **env) int spawnvp(int mode,char *path,char *arg[]) int spawnvpe(int mode,char *path,char *arg[],char **env)【位置】process.h 【說明】每個spawn函數的結尾字母表明其使用哪一種變形。P 在DOS路徑中查找子進程。L 傳遞固定長度的參數列表。V 傳遞可改變長度的參數列表。 E 傳遞一個env指針,允許改變子進程的環境。【參見】abort,atexit,exit,exec.system system 【功能】執行一個MS DOS 命令。 【原型】int system(const char *command)【位置】process.h,stdlib.h 【說明】command可以執行一條內部DOS命令,例如DIR、一個.COM或者.EXE程序文件,或者一個.BAT批處理文件。成功返回0,失敗返回-1 【參見】searchpath SETJMP.H longjmp 【功能】執行非本地的跳轉。 【原型】void longjmp(jmp_buf jmpb,int retval) Turbo C函數 【位置】setjmp.h 【說明】將控制權傳遞給調用setjmp(初始化jmpb)的語句。該點將繼續向下執行,假設setjmp返回在retval中定義的數值。longjmp不能返回數值0,如果在retval中返回0,則longjmp將返回1 【參見】ctrlbrk,signal setjmp 【功能】設置非本地跳轉。 【原型】int setjmp(jmp_buf jmpb)【位置】setjmp.h 【說明】保存類似寄存器數值的相關信息,以便于longjmp函數可以將控制權返回給調用setjmp之后的語句。首次調用時返回0 【參見】longjmp SIGNAL.H raise 【功能】向執行程序發送一個信號。【原型】int raise(int sig)【位置】signal.h 【說明】程序可以使用raise給自己發送信號,執行由該信號類型設置的句并(或者默認句柄)。Sig的信號類型在signal.h中定義。【參見】signal signal 【功能】設置某個信號的句柄。 【原型】typedef void(*sigfun)(int subcode)int signal(int sig,sigfun fname)【位置】signal.h 【說明】當產生sig類型的信號時,調用fname指向的函數。信號類型在signal.h中定義。當出現例外條件,或者調用raise時才會產生信號?!緟⒁姟縭aise STDIO.H clearerr 【功能】重設錯誤標識。 【原型】void clearerr(FILE *fp)【位置】stdio.h 【說明】重設流fp中的錯誤標識和文件結尾標識。【參見】eof,ferror,feof,perror fclose 【功能】關閉流。 【原型】int fclose(FILE *fp)【位置】stdio.h 【說明】成功返回0,如果出現任何錯誤則返回EOF?!緟⒁姟縡flush,fcloseall,fopen,flushall,close fcloseall 【功能】關閉所有打開的流。【原型】int fcloseall(void)【位置】stdio.h 【說明】返回關閉的總數目,如果出現任何錯誤則返回EOF。 Turbo C函數 【參見】fclose,flushall fdopen 【功能】將某個流和某個文件句柄相關聯。 【原型】FILE *fdopen(int handle,char *type)【位置】stdio.h 【說明】返回一個指針,指向最近打開的流,如果出現任何錯誤則返回NULL?!緟⒁姟縡open,open feof(f)【功能】如果流f出現錯誤則返回非0值?!驹汀縤nt feof(FILE *stream)【位置】stdio.h 【參見】clearerr,eof ferror(f)【功能】如果流f出現錯誤則返回非0值。【原型】int ferror(FILE *stream)【位置】stdio.h 【參見】clearerr,fopen,eof fflush 【功能】清空某個流。 【原型】int fflush(FILE *fp)【位置】stdio.h 【說明】如果出現任何錯誤則返回EOF?!緟⒁姟縡lushall,fclose fgetc 【功能】從流中得到字符。【原型】int fgetc(FILE *fp)【位置】stdio.h 【說明】該函數是宏getc的函數版本?!緟⒁姟縡getchar,fputc fgetchar 【功能】從stdin中得到一個字符?!驹汀縤nt fgetchar(void)【位置】stdio.h 【說明】函數是宏getchar的函數版本。fgetpos 【功能】得到文件指針的當前位置。 【原型】int fgetpos(FILE *fp,fpos_t *pos)【位置】stdio.h 【說明】*pos中保存的位置可以傳遞給fsetpos,從而設置文件指針。成功返回0,否則返回一個非0值。 【參見】fseek,fsetpos,ftell,tell fgets 【功能】從流中得到一個字符串。 【原型】char *fgets(char *s,int n,FILE *fp)【位置】stdio.h 【說明】成功則返回目的字符串s,錯誤或者遇到文件結尾則返回NULL。 Turbo C函數 【參見】fputs,gets fileno(f)【功能】返回與流f相關聯的文件句柄。【宏原型】int fileno(FILE *stream)【位置】stdio.h flushall 【功能】清空所有打開的流?!驹汀縡lushall(void)【位置】stdio.h 【說明】清空輸入流的緩存區和輸出流文件的輸出緩存。返回一個整數,表示打開的輸入輸出流的數目。 【參見】fflush,fclose,fcloseall fopen 【功能】打開一個流。 【原型】FILE *fopen(const char *filename,const char *mode)【位置】stdio.h 【說明】如果成功則返回一個指針,指向最近打開的流,否則返回NULL?!緟⒁姟縡close,creat,open,dup,ferror,_fmode,rewind,setbuf,setmode fprintf 【功能】向流發送格式化輸出。 【原型】int fprintf(FILE *fp,const char *format,…)【位置】stdio.h 【說明】使用格式說明符與printf相同,但是frintf向指定流fp發送輸出,fprintf返回輸出字節數。出現錯誤則返回EOF。【參見】putc,fscanf fputc 【功能】向某個流輸出一個字符?!驹汀縤nt fputc(int c,FILE *fp)【位置】stdio.h 【說明】該函數是宏getc的函數版本。fputchar 【功能】向stdot輸出一個字符?!驹汀縤nt fputchar(int c)【位置】stdio.h 【說明】函數是宏getchar的函數版本。fputs 【功能】向某個流輸出一個字符。 【原型】int fputs(const char *s,FILE *fp)【位置】stdio.h 【說明】成功完成之后,返回最近寫入的字符,否則返回EOF?!緟⒁姟縡gets,puts fread 【功能】從某個流讀入數據。 【原型】size_t fread(void *ptr,size_t n,FILE *fp)【位置】stdio.h 【說明】每次讀入n個條目的字節大小。返回實際讀入的條目數(而不是字節數)。 Turbo C函數 【參見】fopen,fwrite freopen 【功能】將一個新文件和某個打開的流相關聯。 【原型】FILE *freopen(const char *filename,const char *mode,FILE *stream)【位置】stdio.h 【說明】首先關閉流。然后打開使用路徑命名的文件,并且將其與流相關聯。成功則返回流,失敗返回NULL?!緟⒁姟縡open fscanf 【功能】從某個流執行格式化輸入。 【原型】int fscanf(FILE *fp,const char *format,…)【位置】stdio.h 【說明】返回成功掃描、轉換并且保存的輸入字段數目,返回值中不包括沒有保存的掃描字段?!緟⒁姟縢etc,fprintf,scanf fseek 【功能】定位某個流的文件指針。 【原型】int fseek(FILE *fp,long offset,int whence)【位置】stdio.h 【說明】offset表示與whence指定位置相對應的新位置。成功返回0,時白則返回非0值?!緟⒁姟縡tell,fopen,lseek,rewind fsetpos 【功能】定位某個流的文件指針。 【原型】int fsetpos(FILE *fp,const fpos_t *pos)【位置】stdio.h 【說明】pos指向的新位置是通過上一次調用fgetpos得到的數值。成功返回0,時白返回一個非0值。 【參見】feek,fgetpos,ftell ftell 【功能】返回當前文件指針。【原型】long ftell(FILE *fp)【位置】stdio.h 【說明】成功則返回當前的文件指針位置,出現錯誤則返回-1L?!緟⒁姟縯ell,fseek,fgetpos,fsetpos fwrite 【功能】寫入某個流。 【原型】size_t fwrite(const void *ptr,xiae_t n,FILE *fp)【位置】stdio.h 【說明】每次寫入n個條目大小的字節,返回實際寫入的條目數(而不是字節數)?!緟⒁姟縡open,fread getc 【功能】從某個流中得到一個字符?!驹汀縤nt get(FILE *fp)【位置】stdio.h 【說明】返回讀入的字符。如果遇到文件尾或者出現錯誤,則返回EOF?!緟⒁姟縡gets,fscanf,fopen,getch,getw,fread,putc,vfscanf,getchar getchar Turbo C函數 【功能】從stdin得到字符?!驹汀縤nt getchar(void)【位置】stdio.h 【說明】成功則getchar將讀入的字符轉換為不加符號的int并返回。如果遇到文件結尾或者出現錯誤,則返回EOF。 【參見】getc,fgetchar,ungetc,scanf,putchar,getch,vscanf,getc gets 【功能】從stdin得到一個字符串。【原型】*getc(char *string)【位置】stdio.h 【說明】從stdin收集輸入內容,知道發現換行符(n)為止。n不放在string中。返回一個指針,指向參數string 【參見】ferror,fopen,fread,getc,putc,scanf getw 【功能】從流中得到整數?!驹汀縤nt getw(FILE *fp)【位置】stdio.h 【說明】返回輸入流中的下一個整數,如果遇到文件結尾或者出現錯誤則返回EOF。使用feof或者ferror校驗是否遇到文件結尾或者出現錯誤?!緟⒁姟縫utw perror 【功能】系統錯誤消息。 【原型】void perror(const char *s)【位置】stdio.h 【說明】向stderr打印一條錯誤消息。首先打印參數字符串,然后打印一個冒號,然后是與當前errno數值相對應的錯誤消息,最后打印換行符?!緟⒁姟縮trerror printf 【功能】向stdout發送格式化輸出。 【原型】int printf(const char *format,…)【位置】stdio.h 【說明】按照format的要求格式化數目不定的參數,然后將輸出結果發送到stdout。該函數返回輸出字節數,如果出現錯誤則返回EOF。 【參見】ecvt,puts,fprintf,scanf,putc,vptintf putc 【功能】向某個流輸出一個字符。【原型】int putc(int ch,FILE *fp)【位置】stdio.h 【說明】成功則putc返回字符ch,錯誤則返回EOF。 【參見】fputs,fputc,fwrite,fputchar,putchar,putw,frintf,vfprintf,getc,putch putchar 【功能】向stdout輸出字符?!驹汀縤nt putchar(int ch)【位置】stdio.h 【說明】成功則返回字符ch,錯誤則返回EOF。 【參見】puts,putw,fputchar,putc,printf,vprintf,getchar,putch 44 Turbo C函數 puts 【功能】向stdout輸出一個字符串(并且添加一個換行符)?!驹汀縤nt puts(const char *s)【位置】stdio.h 【說明】成功完成之后,puts返回寫入的最后一個字符;否則返回EOF?!緟⒁姟縫utchar,gets,fputs,cputs putw 【功能】向某個流輸出一個整數?!驹汀縤nt putw(int w,FILE *fp)【位置】stdio.h 【說明】返回整數w?!緟⒁姟縫rintf,getw remove(filename)【功能】刪除一個文件,該宏翻譯了對unlink的調用。【原型】int remove(filename)【位置】stdio.h 【參見】unlink rename 【功能】重命名一個文件。 【原型】int rename(const char *oldname,const char *newname)【位置】stdio.h 【說明】成功重命名文件之后,rename返回0。出現錯誤則返回-1,并且設置errno。rewind 【功能】重新將文件指針定位在流的開始位置?!驹汀縱oid rewind(FILE *fp)【位置】stdio.h 【參見】fseek,fopen scanf 【功能】執行從stdin的格式化輸入。 【原型】int scanf(congst char *format,…)【位置】stdio.h 【說明】返回成功處理的輸入字段數目。要求按照format的要求處理輸入,并且將結果放在參數指向的內存位置中。 【參見】atof,getc,vfscanf,cscanf,printf,vscanf,fscanf,sscanf,vsscanf setbuf 【功能】為某個流分配緩存。 【原型】void setbuf(FILE *fp,char *buf)【位置】stdio.h 【說明】如果buf為NULL,則無法緩存I/O,否則就可以緩存。緩存區的大小為BUFSIZ字節長。【參見】fopen,setvbuf setvbuf 【功能】為某個流分配緩存。 【原型】setvbuf(FILE *fp,char *buf,int type,size_t size)【位置】stdio.h 【說明】size表示以字節為單位的緩存區大小。使用setvbuf可以為流分配一個較大的緩存區。成功返回0,否則返回一個非0值。 Turbo C函數 【參見】fopen,setbuf sprintf 【功能】向某個字符串發送格式化輸出。 【原型】int sprinf(char *buffer,const char *format,…)【位置】stdio.h 【說明】返回輸出的字節數。出現錯誤時,返回EOF。【參見】printf,fprintf sscanf 【功能】從某個字符串執行格式化輸入。 【原型】int sscnaf(const char *buffer,const char *format,…)【位置】stdio.h 【說明】返回成功掃描、轉換并保存的輸入字段數目。如果sscanf試圖讀入的位置超過緩存區范圍,則返回值為EOF。 【參見】scanf,fscanf _strerror 【功能】構件一條自定義的錯誤消息字符串?!驹汀?_strerror(const char *s)【位置】stdio.h 【說明】錯誤消息由s、一個冒號、一個空格、最近生成的系統錯誤消息及一個換行符構成。S應當小于等于94個字符。返回一個指針,指向錯誤消息字符串?!緟⒁姟縮trerror strerror 【功能】返回指向錯誤消息字符串的指針?!驹汀縞har *strerror(int errnum)【位置】stdio.h 【說明】返回一個指針,指向與errnum相關聯的錯誤消息。【參見】_streeeoe,perror tmpfile 【功能】以二進制模式打開一個scratch文件。【原型】FILE *tmpfile(void)【位置】stdio.h 【說明】返回一個指針,指向臨時文件創建的流。如果無法創建文件,則tmpfile返回NULL。【參見】fopen,tmpnam tmpnam 【功能】創建一個為一個文件名稱?!驹汀縞har *tmpnam(char *sptr)【位置】stdio.h 【說明】如果sptr為NULL,則tmpnam返回一個指針,指向一個內部的靜態對象。否則tmpnam返回sptr。 【參見】tmpfile ungetc 【功能】將一個字符退回輸入流。【原型】int ungetc(int c,FILE *fp)【位置】stdio.h 【說明】下一次對流fp調用getc(或者其他的流輸入函數)時將返回c。如果執行成功,則ungetc返回退回的字符。如果操作失敗則返回EOF。 Turbo C函數 【參見】getc unlink 【功能】刪除一個文件。 【原型】int unlink(const char *filename)【位置】stdio.h,dos.h,io.h 【說明】如果filename指定的文件屬性為只讀,則unlink操作失敗。首先需要調用chomd函數改變文件屬性。 成功返回0,錯誤返回-1?!緟⒁姟縞hmod,remove vfprintf 【功能】使用參數列表向某個流發送格式化輸出。 【原型】int vfprintf(FILE *fp,const char *format,va_list arglist)【位置】stdio.h 【說明】返回輸出的字節數,如果出現錯誤則返回EOF?!緟⒁姟縫rintf vfscanf 【功能】用參數列表向某個流發送格式化輸入。 【原型】int vfscanf(FILE *fp,const char *format,va_list arglist)【位置】stdio.h 【說明】返回成功掃描、轉換并保存的輸入字段數?!緟⒁姟縮canf vprintf 【功能】用參數列表從stdin執行格式化輸出。 【原型】int vprintf(const char *format,va_list,arglist)【位置】stdio.h 【說明】返回輸出的字節數,如果出現錯誤則返回EOF?!緟⒁姟縫rintf vscanf 【功能】使用參數列表從stdin執行格式化輸入。 【原型】int vscanf(const char *format,va_list arglist)【位置】stdio.h 【說明】返回成功掃描、轉換并保存的輸入字段數,遇到文件結尾則返回EOF?!緟⒁姟縮canf vsprintf 【功能】使用參數列表向一個字符串發送格式化輸入。 【原型】vsprintf(char *buffer,const char *format,va_list arglist)【位置】stdio.h 【說明】返回輸出的字結束。如果出現錯誤則返回EOF。【參見】printf vsscanf 【功能】使用參數列表從一個字符串執行格式化輸入。 【原型】int vsscanf(const char *buffer,const char *format,va_list arglist)【位置】stdio.h 【說明】返回成功掃描、轉換并保存的輸入字段數,如果遇到文件結尾則返回EOF。【參見】scanf,sscanf,vfscanf STDLIB.H Turbo C函數 abort 【功能】異常終止某個進程?!驹汀縱oid abort(void)【位置】stdlib.h,process.h 【參見】atexit,assert,exit abs 【功能】得到一個整數的絕對值,abs(x)中的x表示一個int值。【原型】int abs(int x)【位置】math.h,stdlib.h atexit 【功能】寄存器終止函數。 【原型】int atexit(atexit_t func)【位置】stdlib.h 【說明】成功返回0,失敗返回非0值?!緟⒁姟縠xit,abort atof 【功能】將一個字符串轉換成符點數。【原型】double atof(const char *s)【位置】math.h,stdlib.h 【說明】返回s經過轉換之后的值,如果s不能轉換則返回0?!緟⒁姟縜toi,atol,ecvt,fcvt,sscanf,strtod atoi 【功能】將一個字符串轉換為一個短整數?!驹汀縤nt atoi(const char 8s)【位置】stdlib.h 【說明】返回輸入字符串轉換后的值。如果字符串無法轉換,則返回值為0?!緟⒁姟縜tof,atol,ecvt,sscanf,strtod atol 【功能】將一個字符串轉換為一個長整數?!驹汀縤nt atol(const char *s)【位置】stdlib 【說明】返回輸入字符串轉換后的值。如果字符串無法轉換,則返回值為0?!緟⒁姟縜tof,atoi,ecvt,fcvt,sscanf,strtod bsearch 【功能】兩分法查找。 【原型】*bsearch(const void key,const void base,size_t width,int(fcmp)(const void,const void*)) 【位置】stdlib.h 【說明】返回表中的一個符合查找關鍵字的條目的值。如果沒有找到匹配條目,則返回0。在bsearch中,如果*elem1小于*elem2則*fcmp的返回值小于0,如果*elem1等于*elem2則返回值等于0,如果*elem1大于*elem2則返回值大于0。表必須按照升序排列?!緟⒁姟縧search,qsort calloc 【功能】分配主存。 【原型】void *calloc(size_t nelem,size_t elsize)【位置】stdlib.h,alloc.h Turbo C函數 【說明】為nelem數據項的每elsize個字節分別分配空間,同時在空間中保存0值。返回一個指向新分配塊的指針,如果沒有足夠的空間則返回NULL?!緟⒁姟縨alloc div 【功能】兩個整數相除。 【原型】div_t div(int number,int denom)【位置】stdlib.h 【說明】每個函數都返回一個結構,其中的元素由quot(商)和rem(余數)組成。Div的元素為整型。ecvt 【功能】將一個符點數轉換為字符串。 【原型】char *ecvt(double value,int ndig,int *dec,int *sign)【位置】stdlib.h exit 【功能】終止程序。 【原型】void exit(int status)【位置】stdlib.h,process.h 【說明】終止程序之前,清空輸出緩存,關閉文件,并且退出調用的函數?!緟⒁姟縜bort,atext,_exit fcvt 【功能】將一個符點數轉換為字符串。 【原型】char *fcvt(double value,int ndig,int *dec,int *sign)【位置】stdlib.h free 【功能】釋放通過malloc或者calloc分配的數據塊?!驹汀縱oid free(void *block)【位置】stdlib.h,alloc.h 【參見】malloc,calloc,freemem gcvt 【功能】將一個符點數轉換為字符串。 【原型】char *gcvt(double value,int ndig,char *buf)【位置】stdlib.h 【說明】返回buf 【參見】ecvt,fcvt gerenv 【功能】從環境變量中得到字符串。 【原型】char *getenv(const char *name)【位置】stdlib.h 【說明】成功返回一個指針,指向與name相關的數值;如果name環境中沒有定義,則返回NULL?!緟⒁姟縫utenv,envirir itoa 【功能】將一個整數轉換為字符串。 【原型】char *itoa(int value,char *string,int radix)【位置】stdlib.h 【說明】返回一個指針,指向目的字符串?!緟⒁姟縧toa labs Turbo C函數 【功能】求長整數的絕對值。【原型】long labs(long x)【位置】math.h,stdlib.h 【參見】abs,cabs ldiv 【功能】兩個長整數相除。 【原型】ldiv_t ldiv(long lnumber,long ldenom)【位置】stdlib.h 【說明】每個函數都返回一個結構,其中的元素由quot(商)和rem(余數)組成。Ldiv的元素為長整型。lfind 【功能】執行線性查找。 【原型】void *lfind(const void *key,const void *base,size_t *pnelem,size_t width, int(*fcmp)(const void*,const void*))【位置】stdlib.h 【說明】該函數使用一個用戶自定義的程序(fcmp),在順序記錄的數組中查找key值。 數組中一共有pnelem個記錄,每個的寬度為width字節,并且從base指向的內存位置開始。返回表中與查找關鍵字匹配的第1個條目的地址。如果沒有找到匹配條目,則lsearch將其添加到列表結尾。如果*elem1等于*elem2則*fcmp程序必須返回0,否則返回非0。【參見】basearch,qsort _lrotl 【功能】將一個長整數向右循環。 【原型】_lrotl(unsigned long val,int count)【位置】stdlib.h 【說明】函數返回val循環count位后的數值?!緟⒁姟縚rotl _lrotr 【功能】將一個長整數向左循環。 【原型】_lrotr(unsigned long val,int count)【位置】stdlib.h 【說明】函數返回val循環count位后的數值。【參見】_rolt lsearch 【功能】執行線性查找。 【原型】void *lsearch(const void *key,void *base,size_t *pnelem,size_t width,int(*fcmp)(const void*,const void*))【位置】stdlib.h 【說明】該函數使用一個用戶自定義的程序(fcmp),在順序記錄的數組中查找key值。數組中一共有pnelem個記錄,每個的寬度為width字節,并且從base指向的內存位置開始。 返回表中與查找關鍵字匹配的第1個條目的地址。如果沒有找到匹配條目,則lsearch將其添加到列表結尾。如果*elem1等于*elem2則*fcmp程序必須返回0,否則返回非0?!緟⒁姟縝search,qsort ltoa 【功能】將一個長整數轉換成一個字符串。 【原型】char *ltoa(long value,char *string,int radix)【位置】stdlib.h PostgreSQL學習手冊:SQL語言函數 一、基本概念: SQL函數可以包含任意數量的查詢,但是函數只返回最后一個查詢(必須是SELECT)的結果。在簡單情況下,返回最后一條查詢結果的第一行。如果最后一個查詢不返回任何行,那么該函數將返回NULL值。如果需要該函數返回最后一條SELECT語句的所有行,可以將函數的返回值定義為集合,即SETOF sometype。 SQL函數的函數體應該是用分號分隔的SQL語句列表,其中最后一條語句之后的分號是可選的。除非函數聲明為返回void,否則最后一條語句必須是SELECT。事實上,在SQL函數中,不僅可以包含SELECT查詢語句,也可以包含INSERT、UPDATE和DELETE等其他標準的SQL語句,但是和事物相關的語句不能包含其中,如BEGIN、COMMIT、ROLLBACK和SAVEPOINT等。 CREATE FUNCTION命令的語法要求函數體寫成一個字符串文本。通常來說,該文本字符串常量使用美元符($$)圍住,如: CREATE FUNCTION clean_emp()RETURNS void AS $$ DELETE FROM emp WHERE salary < 0; $$ LANGUAGE SQL; 最后需要說明的是SQL函數中的參數,PostgreSQL定義$1表示第一個參數,$2為第二個參數并以此類推。如果參數是復合類型,則可以使用點表示法,即$1.name訪問復合類型參數中的name字段。需要注意的是函數參數只能用作數據值,而不能用于標識符,如: INSERT INTO mytable VALUES($1);--合法 INSERT INTO $1 VALUES(42);--不合法(表名屬于標示符之一) 二、基本類型: 最簡單的SQL函數可能就是沒有參數且返回基本類型的函數了,如: CREATE FUNCTION one()RETURNS integer AS $$ SELECT 1 AS result; $$ LANGUAGE SQL; 下面的例子聲明了基本類型作為函數的參數。 CREATE FUNCTION add_em(integer, integer)RETURNS integer AS $$ SELECT $1 + $2; $$ LANGUAGE SQL; # 通過select調用函數。 postgres=# SELECT add_em(1,2)AS answer; answer -------- (1 row) 在下面的例子中,函數體內包含多個SQL語句,它們之間是用分號進行分隔的。 CREATE FUNCTION tf1(integer, numeric)RETURNS numeric AS $$ UPDATE bank SET balance = balance-$2 WHERE accountno = $1; SELECT balance FROM bank WHERE accountno = $1; $$ LANGUAGE SQL; lv包包、古奇女包、coach包:|兔毛皮草、獺兔皮草、皮草服飾: 三、復合類型: 見如下示例: 1).創建數據表,這樣與之對應的復合類型也隨之生成。 CREATE TABLE emp(name text,salary numeric,age integer,); 2).創建函數,其參數為復合類型。在函數體內,可以像引用基本類型參數那樣引用復合類型,如$1。訪問復合類型的字段使用點表達式即可,如:$1.salary。 CREATE FUNCTION double_salary(emp)RETURNS integer AS $$ SELECT($1.salary * 2)::integer AS salary; $$ LANGUAGE SQL; 3).在select語句中,可以使用emp.*表示emp表的一整行數據。 SELECT name, double_salary(emp.*)AS dream FROM emp WHERE age > 30; 4).我們也可以使用ROW表達式構造自定義的復合類型,如: SELECT name, double_salary(ROW(name, salary*1.1, age))AS dream FROM emp; 5).創建一個函數,其返回值為復合類型,如: CREATE FUNCTION new_emp()RETURNS emp AS $$ SELECT ROW('None', 1000.0, 25)::emp; $$ LANGUAGE SQL; 6).調用返回復合類型的函數。 SELECT new_emp(); 7).調用返回復合類型的函數,同時訪問該返回值的某個字段。 SELECT(new_emp()).name; 四、帶輸出參數的函數: 還有一種方法可以用于返回函數執行的結果,即輸出參數,如: CREATE FUNCTION add_em2(IN x int, IN y int, OUT sum int)AS $$ SELECT $1 + $2 $$ LANGUAGE SQL; 調用方法和返回結果與add_em(帶有返回值的函數)完全一致,如: SELECT add_em(3,7); 這個帶有輸出參數的函數和之前的add_em函數沒有本質的區別。事實上,輸出參數的真正價值在于它為函數提供了返回多個字段的途徑。如,CREATE FUNCTION sum_n_product(x int, y int, OUT sum int, OUT product int)AS $$ SELECT $1 + $2, $1 * $2 $$ LANGUAGE SQL; 調用方式沒有改變,只是返回結果多出一列。 SELECT * FROM sum_n_product(11,42); sum | product -----+--------- | 462 (1 row) 在上面的示例中,IN用于表示該函數參數為輸入參數(缺省值,可以忽略),OUT則表示該參數為輸出參數。 五、返回結果作為表數據源: 所有SQL函數都可以在查詢的FROM子句里使用。該方法對于返回復合類型的函數而言特別有用,如果該函數定義為返回一個基本類型,那么該函數生成一個單字段表,如果該函數定義為返回一個復合類型,那么該函數生成一個復合類型里每個屬性組成的行。見如下示例: 1).創建一個數據表。 CREATE TABLE foo(fooid int,foosubid int,fooname text); 2).創建SQL函數,其返回值為與foo表對應的復合類型。 CREATE FUNCTION getfoo(int)RETURNS foo AS $$ SELECT * FROM foo WHERE fooid = $1; $$ LANGUAGE SQL; 3).在FROM子句中調用該函數。 SELECT *, upper(fooname)FROM getfoo(1)AS t1; 六、返回集合的SQL函數: 如果SQL函數的返回值為SETOF sometype,那么在調用該函數時,將返回最后一個SELECT查詢的全部數據。這個特性通常用于把函數放在FROM子句里調用,見如下示例: CREATE FUNCTION getfoo(int)RETURNS setof foo AS $$ SELECT * FROM foo WHERE fooid = $1; $$ LANGUAGE SQL; 在FROM子句中調用了返回復合類型集合的函數,其結果等同于:SELECT * FROM(SELECT * FROM foo WHERE fooid = 1)t1; SELECT * FROM getfoo(1)AS t1; 七、多態的SQL函數: SQL函數可以聲明為接受多態類型(anyelement和anyarray)的參數或返回多態類型的返回值,見如下示例: 1).函數參數和返回值均為多態類型。 CREATE FUNCTION make_array(anyelement, anyelement)RETURNS anyarray AS $$ SELECT ARRAY[$1, $2]; $$ LANGUAGE SQL; 其調用方式和調用其它類型的SQL函數完全相同,只是在傳遞字符串類型的參數時,需要顯式轉換到目標類型,否則將會被視為unknown類型,如: SELECT make_array(1, 2)AS intarray, make_array('a'::text, 'b')AS textarray; 2).函數的參數為多態類型,而返回值則為基本類型。 CREATE FUNCTION is_greater(anyelement, anyelement)RETURNS boolean AS $$ SELECT $1 > $2; $$ LANGUAGE SQL; 3).多態類型用于函數的輸出參數。 CREATE FUNCTION dup(f1 anyelement, OUT f2 anyelement, OUT f3 anyarray)AS $$ SELECT $1, ARRAY[$1,$1] $$ LANGUAGE sql; 八、函數重載: 多個函數可以定義成相同的函數名,但是它們的參數一定要有所區分。換句話說,函數名可以重載,此規則有些類似于面向對象語言中的函數重載,見如下示例: CREATE FUNCTION test(int, real)RETURNS...CREATE FUNCTION test(smallint, double)RETURNS...由于在PostgreSQL中函數支持重載,因此在刪除函數時,也必須指定參數列表,如: DROP FUNCTION test(int, real); DROP FUNCTION test(smallint,double); 實驗7 函數 一、實驗目的(1)掌握定義函數的方法; (2)掌握函數實參與形參的對應關系以及“值傳遞”的方式; (3)掌握函數的嵌套調用和遞歸調用的方法; (4)掌握全局變量和局部變量動態變量、靜態變量的概念和使用方法。 (5)學習對多文件程序的編譯和運行。 二、實驗內容 編程序并上機調試運行。 (1)寫一個判別素數的函數,在主函數輸入一個整數,輸出是否是素數的信息。(習 題8.3) 本程序應當準備以下測試數據:17、34、2、1、0。分別輸入數據,運行程序并檢查結果是否正確。 (2)用一個函數來實現將一行字符串中最長的單詞輸出。此行字符串從主函數傳遞 給該函數。(習題8.10) 把兩個函數放在同一程序文件中,作為一個文件進行編譯和運行。 把兩個函數分別放在兩個程序文件中,作為兩個文件進行編譯、連接和運行。 (3)用遞歸法將一個整數n轉換成字符串。例如,輸入483,應輸出字符串“483”。 n的為數不確定,可以是任意的整數。(習題8.17) (4)求兩個整數的最大公約數和最小公倍數。用一個函數求最大公約數,用另一個 函數根據求出的最大公約數求最小公倍數。(習題8.1) ① 不用全局變量,分別用兩個函數求最大公約數和最小公倍數。兩個整數在主函數中輸入,并傳送給函數1,求出的最大公約數返回主函數,然后再與兩個整數一起作為實參傳遞給函數2,以求出最小公倍數,再返回主函數輸出最大公約數和最小公倍數。 ② 用全局變量的方法,分別用兩個函數求最大公約數和最小公倍數,但其值不由函數帶回。將最大公約數和最小公倍數都設為全局變量,在主函數中輸出它們的值。 (5)寫一函數,輸入一個十六進制數,輸出相應的十進制數。(習題8.16) 函數 本章重點: 本章難點: //函數相關內容: *語法:包括定義,聲明,調用,*語義 語句包括:表達式語句,空語句,控制語句,復合語句,函數調形參與實參的意義、作用與區別; 參數的兩種傳遞方式; 對遞歸函數調用過程的理解; 全局變量和局部變量的作用。函數的定義和調用; 函數間的數據傳遞方式; 嵌套調用和遞歸調用; 變量的作用域和存儲類別; 模塊化程序設計方法。用語句 函數:*函數首部:包括返回值類型,函數名,形參 *函數體 *函數調用的過程:*開辟空間(形參,函數的局部變量) 1.函數其實就是一段可以重復調用的、功能相對獨立完整的程序段。 2.主函數可以調用其他函數,其他函數也可以互相調用。 3.一個C程序必須有一個且只能有一個main函數,無論main函數位于程序 的什么位置,運行時都是從main函數開始執行的。 4.函數不能嵌套定義,也就是說一個函數不能從屬于另一個函數。函數之 *把實參送給形參 *執行函數 *釋放空間 間可以互相調用,但是任何函數不能調用main函數,main函數是被操作系 統調用的。 5.函數的分類: (1)從用戶角度看:庫函數、用戶自定義的函數(2)從形式:無參函數、有參函數 6.函數定義即函數的實現,是對所要完成功能的操作進行描述的過程,包 括函數命名和返回值類型聲明、形式參數的類型說明、變量說明和一系 列操作語句等。 函數和變量一樣,必須“先定義,后使用” 7.函數定義應包括以下內容: 函數的名字、返回值的類型。函數參數的類型和名字,無參函數不需要 指定。指定函數的功能 8.在函數體中,聲明部分是對函數內部所用到的變量的類型說明,并對要 調用的函數進行聲明。 9。定義有參函數的一般形式為: 類型標識符 函數名(形式參數表列){ 聲明部分; } 語句; 10.在C語言中,可以用以下幾種方式調用函數(1)函數表達式 函數作為表達式中的一項出現在表達式中,以函數返回值參與表達式 的運算。這時要求函數是有返回值的。 例如:y=sin(x);(2)函數語句 函數調用的一般形式加上分號即構成函數語句。 例如:printf(“%d”,a); 這種方式通常只要求函數完成一定的操作,不要求函數帶回值。(3)函數實參 這種方式是函數作為另一個函數調用的實際參數出現,也就是把該函 數的返回值作為實參進行數據傳送,所以要求該函數必須是有返回值 的。 例如:printf(“%d”,max(a,b)); 11.實參:可以是常量、變量和表達式。 12.只有在發生函數調用時,才給形參分配單元,并且賦值,一旦函數調 用結束后,形參所占的內存單元又被釋放掉。 13.在調用函數過程中發生的實參與形參間的數據傳遞是“值傳遞”,只 能由實參向形參傳遞數據,是單向傳遞,不能由形參傳給實參。 14.聲明的作用是把函數的返回值類型、函數名、函數參數的個數和類型 等信息通知編譯系統,以便在遇到函數調用時,編譯系統能識別該函 數并檢查調用是否合法 15.函數的聲明方法: (1)只說明函數的類型,這稱為簡單聲明。int min();(2)不僅說明函數的類型還要說明參數的個數和類型,這稱為原型聲明。 int min(int x,int y); 16.數組名作函數參數時,形參數組和實參數組為同一數組,共同擁有一段 內存空間。 17.數組元素不能用作形參,因為形參是在函數調用時臨時分配內存存儲 單元的,不能為一個數組元素單獨分配存儲單元。 18.變量的有效范圍(作用域) 19.局部變量也稱為內部變量,是在函數內或函數的復合語句內定義說明的。 20.全局變量也稱為外部變量,它是在函數外部定義的變量,位置在所有 函數前、各個函數之間或所有函數后。 *其作用域是從定義變量的位置開始到本源文件結束。 *設置全局變量的作用是可以增加各個函數之間的數據傳輸渠道。21.變量的完整說明為: 存儲類型 數據類型 變量名表列; 例如: auto int x,y; 22.C語言變量的存儲方式可以分為動態存儲方式和靜態存儲方式。 23.動態存儲方式:(1)自動變量(auto變量)(2)寄存器變量(register變量)(3)形式參數 24.靜態存儲方式: (1)靜態局部變量(static局部變量) 其語法格式為: static 類型標識符 變量名; 例如:static int f; (2)全局變量(全局變量賦初值也是在編譯時完成的,且僅執行一次賦初值的操作。) 不能用extern來初始化外部變量。 (3)靜態外部變量 25.一般為了敘述方便,把建立存儲空間的變量聲明稱定義,而把不需要 建立存儲空間的聲明稱為聲明 26.在函數中出現的對變量的聲明(除了用extern聲明的以外)都是定義。 例如:extern int x=25; //錯誤 *外部變量第二篇:C語言函數
第三篇:PostgreSQL學習手冊:SQL語言函數
第四篇:c語言函數
第五篇:C語言函數知識點總結