Main函數參數argc,argv說明
Wikipedia,自由的百科全書
C/C++語言中的main函數,經常帶有參數argc,argv,如下:
int main(int argc, char** argv)
int main(int argc, char* argv[])
這兩個參數的作用是什麼呢?argc 是指命令列輸入參數的個數,argv儲存了所有的命令列參數。假如你的程式是hello.exe,如果在命令列運行該程式,(首先應該在命令列下用 cd 命令進入到 hello.exe 檔所在目錄) 運行命令為:
hello.exe Shiqi Yu
那麼,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。
下面的程式示範argc和argv的使用:
#include <stdio.h>int main(int argc, char ** argv){ int i; for (i=0; i < argc; i++) printf("Argument %d is %s./n", i, argv[i]); return 0;}
假如上述代碼編譯為hello.exe,那麼運行
hello.exe a b c d e
將得到
Argument 0 is hello.exe.Argument 1 is a.Argument 2 is b.Argument 3 is c.Argument 4 is d.Argument 5 is e.
運行
hello.exe lena.jpg
將得到
Argument 0 is hello.exe.Argument 1 is lena.jpg.
================================
#include <stdio.h>
#include <sys/shm.h>
#include <string.h>
int main(int argc ,char * argv[])
{
int i;
char arg[6][15]={0};
printf("argc : %d /n",argc);
for(i=0;i<argc;i++)
{
sprintf(arg[i],"%s" ,argv[i]);
}
//for(i=1;i<4;i++)
// printf("%s/n",arg[i]);
execlp("/bin/mkdir","mkdir",arg[1],NULL);
return 1;
}
======================================
清單 2. BusyBox 使用 argv[0] 來確定調用哪個應用程式
// test.c#include <stdio.h>int main( int argc, char *argv[] ){ int i; for (i = 0 ; i < argc ; i++) { printf("argv[%d] = %s/n", i, argv[i]); } return 0;}
// test.c#include <stdio.h>int main( int argc, char *argv[] ){ int i; for (i = 0 ; i < argc ; i++) { printf("argv[%d] = %s/n", i, argv[i]); } return 0;} |