|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
如何寫出帶的參數的C/C++程序
[b]不管是unix,還是linux,它們的每個command line命令都有自己的幫助。
這在程序上是如何實現的呢???
在網上找了好長時間了,也沒有什麼頭緒 :(
[/b] |
如何寫出帶的參數的C/C++程序
[code]
void main(argc, argv)
int argc;
char *argv[];
{
if( argc != 4 )
{
fprintf(stderr, "Usage: %s framtype frame_count filename\n",
argv[0]);
exit(1);
}
}
[/code]
其中argc表示包括程序名本身共有幾個參數
例如:程序名:hello
hello wangz 2
argc == 3
argv中存放各參數:
接上例:
argv[0] == "hello"
argv[1] == "wangz"
argv[2] == "2"
參數之間以空格、TAB為分隔符。 |
如何寫出帶的參數的C/C++程序
thx
試試 |
如何寫出帶的參數的C/C++程序
C語言規定,主函數也可以帶參數就像我們編寫的用戶函數一樣,可以帶參數,也可以不帶參數。主函數的形式參數只有兩個: 一個形式參數是記錄了參數的個數,這是一個整形的形式參數,其名稱規定為「argc」;第二個形式參數集資記錄了在調用該主函數(即執行程序)時給出的實際參數內容(字符串),這個形式參數是一個字符指針型數組,每個元素指向一個實際參數對應的字符串,第二個形式參數名稱規定為「argv[]」。
帶參數的主函數在定義時其函數頭的定義規定如下:
main(argc,argv)
int argc; /*第1個形式參數:整型*/
char * argv[] /*第2個形式能數:字符指針型數組*/
。。。
若主函數帶參數,則執行目標程序時,應按照下列的格式給出參數:
程序名 實際參數1 實際參數2 。。。 實際參數 n
此時,系統會自動因內存開闢區域依次存放程序名和所有的實際參數,同時給主函數的形式參數賦值,([b]以前就是在這裡被擋住了,一個程序如果有了參數豈不是要有一個類似監控鍵盤輸入的函數嗎?要不然它是怎麼接收自己的函數的,再想想不對啊!應該是沒有這樣的一個程序的,但是程序裡面是怎麼實現的呢?如果是一個獲得鍵盤字符的函數,那它應該在打命令之前就已經運行了,但不是運行程序怎麼會執行函數呢?呵呵,成了先有雞還是先有蛋的問題了 :-)[/b] )結果如下
形參argc 賦值為n+1 ,表示連同程序名在內共有n+1個參數。
形參argv[0]賦值為存放「實際參數1」字符串的首地址;
:
:
argv[n]賦值為存放「實際參數n"字符串的首地址。
摘自「計算機應用」自學考試課本《高級語言程序設計》 P202 |
如何寫出帶的參數的C/C++程序
argc的操作比較簡單已經試驗成功了,現在的問題出在argv上面:
main(argc,argv)
int argc;
char *argv[];
{
if(argv[1]=="null")
printf("This is a man")
else
printf("%s\n",argv[1]);
}
程序試運行一下,並在else插入斷點,求得他的值就是null,但程序就認為argv[1]的值不等於null,argv[1]的值到底是什麼呢??
TC2.0 |
如何寫出帶的參數的C/C++程序
看書吧,這樣的問題。 |
如何寫出帶的參數的C/C++程序
| 如何寫出帶的參數的C/C++程序
呵呵
是從來沒見過
這時候要判斷argc
if (argc == 1)
........
else
....... |
如何寫出帶的參數的C/C++程序
不好意思了,C上俺是比較菜。手上的書關於字符串講得不多,本來打算去書店買本新書的但是現在這個情況能不出門就不出門了。
能上網真好!! |
如何寫出帶的參數的C/C++程序
#include "string.h"
main(argc,argv)
int argc;
char *argv[]
{
int r;
char *s1="\/?";
r=strcmp(argv[1],s1);
if(r=0)
printf("This is a man\n");
else
printf("Program END");
} |
| |