藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 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");
}



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com