M.xml
??????????????????????main()主函數?每一C?程序都必須有一main()函數,?可以根據自己的愛好把它放在程序的某?
個地方。有些程序員把它放在最前面,?而另一些程序員把它放在最后面,?無論放?
在哪個地方,?以下幾點說明都是適合的。?
????1.?main()?參數?在Turbo?C2.0啟動過程中,?傳遞main()函數三個參數:?argc,?argv和env。?*?argc:??整數,?為傳給main()的命令行參數個數。?*?argv:??字符串數組。?在DOS?3.X?版本中,?argv[0]?為程序運行的全路徑名;?對DOS?3.0?以下的版本,?argv[0]為空串("")?。?argv[1]?為在DOS命令行中執行程序名后的第一個字符串;?argv[2]?為執行程序名后的第二個字符串;?...?argv[argc]為NULL。?*env:??安符串數組。env[]?的每一個元素都包含ENVVAR=value形式的字符?
串。其中ENVVAR為環境變量如PATH或87。value?為ENVVAR的對應值如C:\DOS,?C:?
\TURBOC(對于PATH)?或YES(對于87)。?Turbo?C2.0啟動時總是把這三個參數傳遞給main()函數,?可以在用戶程序中?
說明(或不說明)它們,?如果說明了部分(或全部)參數,?它們就成為main()子程序?
的局部變量。?
????請注意:?一旦想說明這些參數,?則必須按argc,?argv,?env?的順序,?如以下?
的例子:?
?????main()?main(int?argc)?main(int?argc,?char?*argv[])?main(int?argc,?char?*argv[],?char?*env[])?
其中第二種情況是合法的,?但不常見,?因為在程序中很少有只用argc,?而不?
用argv[]的情況。?
????以下提供一樣例程序EXAMPLE.EXE,??演示如何在main()函數中使用三個參數:?/*program?name?EXAMPLE.EXE*/?#include?<stdio.h>?#include?<stdlib.h>?main(int?argc,?char?*argv[],?char?*env[])?{?int?i;?printf("These?are?the?%d??command-?line??arguments?passed??to?main:\n\n",?argc);?for(i=0;?i<=argc;?i++)?printf("argv[%d]:%s\n",?i,?argv[i]);?printf("\nThe?environment?string(s)on?this?system?are:\n\n");?for(i=0;?env[i]!=NULL;?i++)?printf("?env[%d]:%s\n",?i,?env[i]);?}?如果在DOS?提示符下,?按以下方式運行EXAMPLE.EXE:?C:\example?first_argument?"argument?with?blanks"??3??4??"last??but? one"?stop!?注意:?可以用雙引號括起內含空格的參數,?如本例中的:???"??argument? with?blanks"和"Last?but?one")。?結果是這樣的:?The?value?of?argc?is?7?These?are?the?7?command-linearguments?passed?to?main:?argv[0]:C:\TURBO\EXAMPLE.EXE?argv[1]:first_argument?argv[2]:argument?with?blanks?argv[3]:3?argv[4]:4?argv[5]:last?but?one?argv[6]:stop!?argv[7]:(NULL)?The?environment?string(s)?on?this?system?are:?env[0]:?COMSPEC=C:\COMMAND.COM?env[1]:?PROMPT=$P$G????????????/*視具體設置而定*/?env[2]:?PATH=C:\DOS;C:\TC??????/*視具體設置而定*/?應該提醒的是:?傳送main()?函數的命令行參數的最大長度為128?個字符?(包?
括參數間的空格),??這是由DOS?限制的。?
函數名:?matherr?
功??能:?用戶可修改的數學錯誤處理程序?
用??法:?int?matherr(struct?exception?*e);?
程序例:?
/*?This?is?a?user-defined?matherr?function?that?prevents?any?error?messages?from?being?printed.?*/? #include<math.h>? int?matherr(struct?exception?*a)? {?return?1;? }?
函數名:?memccpy?
功??能:?從源source中拷貝n個字節到目標destin中?
用??法:?void?*memccpy(void?*destin,?void?*source,?unsigned?char?ch,?
???????unsigned?n);?
程序例:?
#include?<string.h>? #include?<stdio.h>? int?main(void)? {?char?*src?=?"This?is?the?source?string";?char?dest[50];?char?*ptr;?ptr?=?memccpy(dest,?src,?'c',?strlen(src));?if?(ptr)?{?*ptr?=?'\0';?printf("The?character?was?found:??%s\n",?dest);?}?else?printf("The?character?wasn't?found\n");?return?0;? }?
函數名:?malloc?
功??能:?內存分配函數?
用??法:?void?*malloc(unsigned?size);?
程序例:?
#include?<stdio.h>? #include?<string.h>? #include?<alloc.h>? #include?<process.h>? int?main(void)? {?char?*str;?/*?allocate?memory?for?string?*/?/*?This?will?generate?an?error?when?compiling?*/?/*?with?C++,?use?the?new?operator?instead.?*/?if?((str?=?malloc(10))?==?NULL)?{?printf("Not?enough?memory?to?allocate?buffer\n");?exit(1);??/*?terminate?program?if?out?of?memory?*/?}?/*?copy?"Hello"?into?string?*/?strcpy(str,?"Hello");?/*?display?string?*/?printf("String?is?%s\n",?str);?/*?free?memory?*/?free(str);?return?0;? }?
函數名:?memchr?
功??能:?在數組的前n個字節中搜索字符?
用??法:?void?*memchr(void?*s,?char?ch,?unsigned?n);?
程序例:?
#include?<string.h>? #include?<stdio.h>? int?main(void)? {?char?str[17];?char?*ptr;?strcpy(str,?"This?is?a?string");?ptr?=?memchr(str,?'r',?strlen(str));?if?(ptr)?printf("The?character?'r'?is?at?position:?%d\n",?ptr?-?str);?else?printf("The?character?was?not?found\n");?return?0;? }?
函數名:?memcpy?
功??能:?從源source中拷貝n個字節到目標destin中?
用??法:?void?*memcpy(void?*destin,?void?*source,?unsigned?n);?
程序例:?
#include?<stdio.h>? #include?<string.h>? int?main(void)? {?char?src[]?=?"******************************";?char?dest[]?=?"abcdefghijlkmnopqrstuvwxyz0123456709";?char?*ptr;?printf("destination?before?memcpy:?%s\n",?dest);?ptr?=?memcpy(dest,?src,?strlen(src));?if?(ptr)?printf("destination?after?memcpy:??%s\n",?dest);?else?printf("memcpy?failed\n");?return?0;? }?
函數名:?memicmp?
功??能:?比較兩個串s1和s2的前n個字節,?忽略大小寫?
用??法:?int?memicmp(void?*s1,?void?*s2,?unsigned?n);?
程序例:?
#include?<stdio.h>? #include?<string.h>? int?main(void)? {?char?*buf1?=?"ABCDE123";?char?*buf2?=?"abcde456";?int?stat;?stat?=?memicmp(buf1,?buf2,?5);?printf("The?strings?to?position?5?are?");?if?(stat)?printf("not?");?printf("the?same\n");?return?0;? }?
函數名:?memmove?
功??能:?移動一塊字節?
用??法:?void?*memmove(void?*destin,?void?*source,?unsigned?n);?
程序例:?
#include?<string.h>? #include?<stdio.h>? int?main(void)? {?char?*dest?=?"abcdefghijklmnopqrstuvwxyz0123456789";?char?*src?=?"******************************";?printf("destination?prior?to?memmove:?%s\n",?dest);?memmove(dest,?src,?26);?printf("destination?after?memmove:????%s\n",?dest);?return?0;? }?
函數名:?memset?
功??能:?設置s中的所有字節為ch,?s數組的大小由n給定?
用??法:?void?*memset(void?*s,?char?ch,?unsigned?n);?
程序例:?
#include?<string.h>? #include?<stdio.h>? #include?<mem.h>? int?main(void)? {?char?buffer[]?=?"Hello?world\n";?printf("Buffer?before?memset:?%s\n",?buffer);?memset(buffer,?'*',?strlen(buffer)?-?1);?printf("Buffer?after?memset:??%s\n",?buffer);?return?0;? }?
函數名:?mkdir?
功??能:?建立一個目錄?
用??法:?int?mkdir(char?*pathname);?
程序例:?
#include?<stdio.h>? #include?<conio.h>? #include?<process.h>? #include?<dir.h>? int?main(void)? {?int?status;?clrscr();?status?=?mkdir("asdfjklm");?(!status)???(printf("Directory?created\n"))?:?(printf("Unable?to?create?directory\n"));?getch();?system("dir");?getch();?status?=?rmdir("asdfjklm");?(!status)???(printf("Directory?deleted\n"))?:?(perror("Unable?to?delete?directory"));?return?0;? }?
函數名:?mktemp?
功??能:?建立唯一的文件名?
用??法:?char?*mktemp(char?*template);?
程序例:?
#include?<dir.h>? #include?<stdio.h>? int?main(void)? {?/*?fname?defines?the?template?for?the?temporary?file.??*/?char?*fname?=?"TXXXXXX",?*ptr;?ptr?=?mktemp(fname);?printf("%s\n",ptr);?return?0;? }?
函數名:?MK_FP?
功??能:?設置一個遠指針?
用??法:?void?far?*MK_FP(unsigned?seg,?unsigned?off);?
程序例:?
#include?<dos.h>? #include?<graphics.h>? int?main(void)? {?int?gd,?gm,?i;?unsigned?int?far?*screen;?detectgraph(&gd,?&gm);?if?(gd?==?HERCMONO)?screen?=?MK_FP(0xB000,?0);?else?screen?=?MK_FP(0xB800,?0);?for?(i=0;?i<26;?i++)?screen[i]?=?0x0700?+?('a'?+?i);?return?0;? }?
函數名:?modf?
功??能:?把數分為指數和尾數?
用??法:?double?modf(double?value,?double?*iptr);?
程序例:?
#include?<math.h>? #include?<stdio.h>? int?main(void)? {?double?fraction,?integer;?double?number?=?100000.567;?fraction?=?modf(number,?&integer);?printf("The?whole?and?fractional?parts?of?%lf?are?%lf?and?%lf\n",?number,?integer,?fraction);?return?0;? }?
函數名:?movedata?
功??能:?拷貝字節?
用??法:?void?movedata(int?segsrc,?int?offsrc,?int?segdest,?
??int?offdest,?unsigned?numbytes);?
程序例:?
#include?<mem.h>? #define?MONO_BASE?0xB000? /*?saves?the?contents?of?the?monochrome?screen?in?buffer?*/? void?save_mono_screen(char?near?*buffer)? {?movedata(MONO_BASE,?0,?_DS,?(unsigned)buffer,?80*25*2);? }? int?main(void)? {?char?buf[80*25*2];?save_mono_screen(buf);? }?
函數名:?moverel?
功??能:?將當前位置(CP)移動一相對距離?
用??法:?void?far?moverel(int?dx,?int?dy);?
程序例:?
#include?<graphics.h>? #include?<stdlib.h>? #include?<stdio.h>? #include?<conio.h>? int?main(void)? {?/*?request?auto?detection?*/?int?gdriver?=?DETECT,?gmode,?errorcode;?char?msg[80];?/*?initialize?graphics?and?local?variables?*/?initgraph(&gdriver,?&gmode,?"");?/*?read?result?of?initialization?*/?errorcode?=?graphresult();?if?(errorcode?!=?grOk)??/*?an?error?occurred?*/?{?printf("Graphics?error:?%s\n",?grapherrormsg(errorcode));?printf("Press?any?key?to?halt:");?getch();?exit(1);?/*?terminate?with?an?error?code?*/?}?/*?move?the?C.P.?to?location?(20,?30)?*/?moveto(20,?30);?/*?plot?a?pixel?at?the?C.P.?*/?putpixel(getx(),?gety(),?getmaxcolor());?/*?create?and?output?a?message?at?(20,?30)?*/?sprintf(msg,?"?(%d,?%d)",?getx(),?gety());?outtextxy(20,?30,?msg);?/*?move?to?a?point?a?relative?distance?*/?/*?away?from?the?current?value?of?C.P.?*/?moverel(100,?100);?/*?plot?a?pixel?at?the?C.P.?*/?putpixel(getx(),?gety(),?getmaxcolor());?/*?create?and?output?a?message?at?C.P.?*/?sprintf(msg,?"?(%d,?%d)",?getx(),?gety());?outtext(msg);?/*?clean?up?*/?getch();?closegraph();?return?0;? }?
函數名:?movetext?
功??能:?將屏幕文本從一個矩形區域拷貝到另一個矩形區域?
用??法:?int?movetext(int?left,?int?top,?int?right,?int?bottom,?
??int?newleft,?int?newtop);?
程序例:?
#include?<conio.h>? #include?<string.h>? int?main(void)? {?char?*str?=?"This?is?a?test?string";?clrscr();?cputs(str);?getch();?movetext(1,?1,?strlen(str),?2,?10,?10);?getch();?return?0;? }?
函數名:?moveto?
功??能:?將CP移到(x,?y)?
用??法:?void?far?moveto(int?x,?int?y);?
程序例:?
#include?<graphics.h>? #include?<stdlib.h>? #include?<stdio.h>? #include?<conio.h>? int?main(void)? {?/*?request?auto?detection?*/?int?gdriver?=?DETECT,?gmode,?errorcode;?char?msg[80];?/*?initialize?graphics?and?local?variables?*/?initgraph(&gdriver,?&gmode,?"");?/*?read?result?of?initialization?*/?errorcode?=?graphresult();?if?(errorcode?!=?grOk)??/*?an?error?occurred?*/?{?printf("Graphics?error:?%s\n",?grapherrormsg(errorcode));?printf("Press?any?key?to?halt:");?getch();?exit(1);?/*?terminate?with?an?error?code?*/?}?/*?move?the?C.P.?to?location?(20,?30)?*/?moveto(20,?30);?/*?plot?a?pixel?at?the?C.P.?*/?putpixel(getx(),?gety(),?getmaxcolor());?/*?create?and?output?a?message?at?(20,?30)?*/?sprintf(msg,?"?(%d,?%d)",?getx(),?gety());?outtextxy(20,?30,?msg);?/*?move?to?(100,?100)?*/?moveto(100,?100);?/*?plot?a?pixel?at?the?C.P.?*/?putpixel(getx(),?gety(),?getmaxcolor());?/*?create?and?output?a?message?at?C.P.?*/?sprintf(msg,?"?(%d,?%d)",?getx(),?gety());?outtext(msg);?/*?clean?up?*/?getch();?closegraph();?return?0;? }?
函數名:?movemem?
功??能:?移動一塊字節?
用??法:?void?movemem(void?*source,?void?*destin,?unsigned?len);?
程序例:?
#include?<mem.h>? #include?<alloc.h>? #include?<stdio.h>? #include?<string.h>? int?main(void)? {?char?*source?=?"Borland?International";?char?*destination;?int?length;?length?=?strlen(source);?destination?=?malloc(length?+?1);?movmem(source,destination,length);?printf("%s\n",destination);?return?0;? }?
函數名:?normvideo?
功??能:?選擇正常亮度字符?
用??法:?void?normvideo(void);?
程序例:?
#include?<conio.h>? int?main(void)? {?normvideo();?cprintf("NORMAL?Intensity?Text\r\n");?return?0;? }?
函數名:?nosound?
功??能:?關閉PC揚聲器?
用??法:?void?nosound(void);?
程序例:?
/*?Emits?a?7-Hz?tone?for?10?seconds.?True?story:?7?Hz?is?the?resonant?frequency?of?a?chicken's?skull?cavity.?This?was?determined?empirically?in?Australia,?where?a?new?factory?generating?7-Hz?tones?was?located?too?close?to?a?chicken?ranch:?When?the?factory?started?up,?all?the?chickens?died.?Your?PC?may?not?be?able?to?emit?a?7-Hz?tone.? */? int?main(void)? {?sound(7);?delay(10000);?nosound();? }?
本文使用?書畫小說軟件?發布,內容與軟件無關,書畫小說軟件?更愜意的讀、更舒心的寫、更輕松的發布。
?轉載于:https://www.cnblogs.com/shuilan0066/p/4033012.html
總結
- 上一篇: 汇编基础实验3
- 下一篇: 一卦,测一下我心里想的事