再談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)。
TurboC2.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
#include
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 butone" stop!
注意:
可以用雙引號括起內含空格的參數,如本例中的:"argumentwith blanks"和"Last but one")。 應該提醒的是:傳送main() 函數的命令
行參數的最大長度為128個字元 (包括參數間的空格),這是由DOS 限制的。文字視窗的定義Turbo C2.0的字元螢幕函數主要包括文字視窗大小
的設定、視窗顏色的設定、視窗文本的清除和輸入輸出等函數。
Turbo C2.0預設定義的文字視窗為整個螢幕,共有80列(或40列)25行的文本單元,每個單元包括一個字元和一個屬性,字元即ASCII碼字元,屬性規定該字元的顏色和強度。