參數傳遞一般是函數傳參或程序執行傳參,本文主要介紹程序執行傳遞參數。程序傳參一般有如下幾種方法。
1、程序執行時傳參
這種傳參使用較多,尤其是一些比較簡單的參數傳遞,如在linux下執行“ls -l、ls -a”時除了命令本身之外還有一些參數,這些參數不同導致程序執行結果不同,這種傳參方法最為簡單也最常用。實現方法如下
例:
#include
int main(int argc, char **argv)
{
int i = 0;
for(i = 0; i < argc; i++)
printf("argv[%d] = %s\n", i, argv[i]);
return 0;
}
運行結果
./test hello world
這種方法是通過main函數的兩個參數argc和argv實現,argc為參數的個數、argv是參數列表,通過解析argv就可以獲取參數內容。單人如果想要實現如ls -l或ls –version之類的參數傳遞則一般需要特殊的參數解析函數getopt、getopt_long或getopt_long_only解析,這裡就不一一介紹了。
2、通過環境變量傳參
通過環境變量傳參也是使用較多的一種,如環境變量較複雜或較多且可能應為環境不同而不同時一般使用這種參數傳遞方式。實現方法如下
首先要設置環境變量如:export TEST_ENV=helloworld
程序中獲取環境變量的方法有兩種
1、 通過main函數的第三個參數將系統所以環境變量傳遞到程序中,然後找到想要的
#include
#include
int main(int argc, char **argv, char **envp)
{
int i = 0;
while(*envp != NULL) {
if (!strncmp(*envp, "TEST_ENV", strlen("TEST_ENV")))
printf("envp[%d] = %s\n", i++, *envp);
i++;
envp++;
}
return 0;
}
運行結果
2、 通過getenv函數獲取特定的環境變量
例:
#include
#include
#include
int main(int argc, char **argv, char **envp)
{
int i = 0;
printf("TEST_ENV = %s\n", getenv("TEST_ENV"));
return 0;
}
運行結果如下:
3、通過配置文件傳參
上述兩種方法傳遞參數相對簡單,如下更加複雜的參數,如很多需要一些配置文件,程序中可通過解析文件的方法實現參數傳遞,這隻需要讀取文件內容安裝格式解析接口即可,主要是文件操作及字符串操作這裡就不詳細講解了
閱讀更多 華清遠見成都中心 的文章