一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

帶參數(shù)的主函數(shù)2

 Eva.zhou 2011-01-19
9.4 帶參數(shù)的主函數(shù)

  C語言規(guī)定,主函數(shù)也可以帶參數(shù),就像我們編寫的用戶函數(shù)一樣,可以帶參數(shù),也可以不帶參數(shù)。主函數(shù)的形式參數(shù)只有兩個:一個形式參數(shù)是記錄了參數(shù)的個數(shù),這是一個整型的形式參數(shù),其名稱規(guī)定為“argc”;第二個形式參數(shù)依次記錄了在調(diào)用該主函數(shù)(即執(zhí)行程序)時給出的實際參數(shù)內(nèi)容(字符串),這個形式參數(shù)是一個字符指針型數(shù)組,每個元素指向一個實際參數(shù)對應的字符串,第二個形式參數(shù)名稱規(guī)定為“argv[]”。

  帶參數(shù)的主函數(shù)在定義時,其函數(shù)頭的定義規(guī)定如下:
    main(argc,argv)
    int argc; /*第1個形式參數(shù):整型*/
    char *argv[]; /*第2個形式參數(shù):字符指針型數(shù)組*/
  如果主函數(shù)不帶參數(shù),執(zhí)行目標程序時只要按下列格式輸入程序名就可以了:
    程序名↙ (其中的↙表示回車,下同)
  我們通常把在操作系統(tǒng)下按上述格式執(zhí)行目標程序時,輸入的一行稱為“命令行”。
  若主函數(shù)帶參數(shù),則執(zhí)行目標程序時,應按下列格式給出相應的實際參數(shù):
    程序名 實際參數(shù)1 實際參數(shù)2 … 實際參數(shù)n↙
  上述格式也是一個命令行。
  此時,系統(tǒng)會自動在內(nèi)存開辟區(qū)域依次存放程序名和所有的實際參數(shù),同時給主函數(shù)的形式參數(shù)賦值,結(jié)果如下:
    形參argc 賦值為n+1,表示連同程序名在內(nèi)共有n+1個參數(shù)。
    形參argv[0]賦值為存放“程序名”字符串的首地址;
    argv[1]賦值為存放“實際參數(shù)1”字符串的首地址;
        .
        .
        .
    argv[n]賦值為存放“實際參數(shù)n”字符串的首地址。

  例如,有一個名為“my_copy.c”的程序,其主函數(shù)帶有參數(shù)。如果在執(zhí)行時,輸入的命令行如下:my_copy a:\ccw1.txt b:\ccw2.txt↙
  則形式參數(shù)的值如下:
    argc=3
    argv[0]指向字符串 "my_copy"
    argv[1]指向字符串 "a:\ccw1.txt"
    argv[2]指向字符串 "a:\ccw2.txt"
  在程序中可以通過形式參數(shù)獲得相應的實際參數(shù),參與程序的運算和加工。

  【例9-8】編一個帶參數(shù)的主函數(shù)。運行時,在程序名后帶有2個整數(shù),程序的功能是輸出這2個整數(shù)的和。

  程序清單如下:

    #include "stdlib.h" /*程序中用到數(shù)據(jù)轉(zhuǎn)換類函數(shù)*/
    main(argc,argv)
    int argc;
    char *argv[];
    { int x,y,sum;
    x=atoi(argv[1]); /*將第1個實際參數(shù)對應的字符串轉(zhuǎn)換成整數(shù)存入x*/
    y=atoi(argv[2]); /*將第2個實際參數(shù)對應的字符串轉(zhuǎn)換成整數(shù)存入y*/
    sum=x+y;
    printf("%d+%d=%d\n",x,y,sum);
    }

  假定本程序編譯后的目標程序名為"test1.exe",執(zhí)行該程序時輸入的命令行如下:

      test1 5 10↙

  則程序運行后的輸出結(jié)果為:5+10=15。

  【例9-9】編一個程序,完成磁盤文件復制。源文件名和目標文件名隨程序運行時輸入。例如,復制a盤根目錄下的文件ccw1.txt為a盤根目錄下的ccw2.txt,則執(zhí)行程序時輸入的命令行如下:程序名 a:\ccw1.txt a:\ccw2.txt↙。

  程序清單如下:

    #include "stdio.h" /*程序中用到文件處理類函數(shù)*/
    main(int argc,char *argv[])
    { FILE *fp1,*fp2;
    if ((fp1=fopen(argv[1],"rb"))==NULL)
      { printf(“"file can not open!\n");
      exit(0);
    } /*以只讀方式打開argv[1]指向的源文件名對應的二進制文件*/
    if ((fp2=fopen(argv[2],"wb"))==NULL)
      { printf("file can not open!\n");
      exit(0);
    } /*以只寫方式打開argv[2]指向的目標文件名對應的二進制文件*/
    while(!feof(fp1)) /*復制源文件到目標文件*/
      fputc(fgetc(fp1),fp2);
    fclose(fp1); /*關(guān)閉fp1所指向的源文件*/
    fclose(fp2); /*關(guān)閉fp2所指向的目標文件*/
    }

 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    精品一区二区三区人妻视频| 偷拍洗澡一区二区三区| 午夜福利92在线观看| 熟女少妇一区二区三区蜜桃| 偷拍洗澡一区二区三区| 亚洲免费视频中文字幕在线观看 | 国产性情片一区二区三区| 午夜成年人黄片免费观看| 日韩不卡一区二区在线| 国产色偷丝袜麻豆亚洲| 尤物天堂av一区二区| 日韩女优精品一区二区三区| 老富婆找帅哥按摩抠逼视频 | 国产在线视频好看不卡| 国自产拍偷拍福利精品图片| 亚洲精品一二三区不卡| 少妇人妻中出中文字幕| 国产偷拍盗摄一区二区| 91老熟妇嗷嗷叫太91| 久久精品中文扫妇内射| 亚洲中文字幕在线观看四区 | 蜜臀人妻一区二区三区| 日韩av欧美中文字幕| 99国产精品国产精品九九 | 免费在线成人午夜视频| 日韩欧美一区二区亚洲| 日韩无套内射免费精品| 东京热男人的天堂一二三区 | 亚洲精品有码中文字幕在线观看| 色哟哟国产精品免费视频| 中文字幕一区二区三区大片| 91人妻久久精品一区二区三区 | 在线亚洲成人中文字幕高清| 九九热视频经典在线观看| 99久只有精品免费视频播放| 国内外激情免费在线视频| 欧美日韩校园春色激情偷拍| 欧美一区二区在线日韩| 亚洲在线观看福利视频| 日韩人妻欧美一区二区久久| 亚洲一级二级三级精品|