int main(int argc, char *argv[ ], char *envp[ ] )
{
program-statements
}
有三個參數
第一個參數:argc是個整型變量,表示指令行參數的個數(含第一個參數)。
第二個參數:argv是個字元指針的數組,每個元素是一個字元指針,指向一個字
符串。這些字元串就是指令行中的每一個參數(字元串)。
第三個參數:envp是字元指針的數組,數組的每一個原元素是一個指向一個環境
變量(字元串)的字元指針。主要用來存放環境變量
舉一個簡單的例子
#include<stdio.h>
intmain(intargc, char* argv[], char* envp[])
{
int i = 0;
for(i=0; i<argc; i++)
{
printf("%s\n", argv[i]);
}
return 0;
}
在項目-屬性-調試-指令行參數中輸入 hello Word 就會出現下面結果
其中argc代表個數
argv[]數組中有四個,其中
argv[0]代表:練習.exe
argv[1]代表:hello
argv[2]代表:word
argv[3]代表:NULL空指針
而envp執行下面程式
#include <stdio.h>
#include<windows.h>
int main(int argc, char* argv[], char* envp[])
{
int i = 0;
while(envp[i] != NULL)
{
printf("%s\n", envp[i]);
i++;
}
system("pause");
return 0;
}
都是環境變量,而且是以NULL結尾。
舉一個例子使用main函數的參數,實作一個整數電腦,程式可以接受三個參數,第一個參數“-a”選項執行加法,“-s”選項執行減法,“-m”選項執行乘法,“-d”選項執行除法,後面兩個參數為操作數。
例如:指令行參數輸入:test.exe -a 1 2 執行1+2輸出3
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<string.h>
int Add(int x,int y)
{
return x + y;
}
int Sub(int x,int y)
{
return x - y;
}
int Mul(int x,int y)
{
return x*y;
}
int Div(int x,int y)
{
return x/y;
}
int main(int argc,char *argv[])
{
int x = atoi(argv[2]); //字元串轉換整形函數
int y = atoi(argv[3]);
int ret = 0;
if(argc != 4)
{
printf("輸入參數有誤\n");
return -1;
}
switch(*(argv[1]+1))
{
case 'a':
ret = Add(x,y);
break;
case 's':
ret = Sub(x,y);
break;
case 'm':
ret = Mul(x,y);
break;
case 'd':
ret = Div(x,y);
break;
default:printf("運算符輸入錯誤\n");
}
/*if(strcmp("-a",argv[1]) == 0)
{
ret = Add(x,y);
}
else if(strcmp("-d",argv[1]) == 0)
{
ret = Div(x,y);
}
else if(strcmp("-m",argv[1]) == 0)
{
ret = Mul(x,y);
}
else if(strcmp("-s",argv[1]) == 0)
{
ret = Sub(x,y);
}*/
printf("%d\n",ret);
system("pause");
return 0;
switch語句中可以更好地調用加減乘除函數,
而if語句中用strcmp函數比較,然後直接傳回所要計算得值。*(argv[1]+1)指向你所要計算的運算。