kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2011-10-01

Dev C++ 參數 main(int argc, char *argv[])

這是第一篇介紹 Dev C++ 如何操作,開始先介紹環境設定,再來是如何讀入參數,用 Dev C++ 這個工具可以完全取代 Turbo C 2.0,毫無問題.

經過這幾天測試,它可以正確的編譯32位元命令列程式,不再有定址的限制了 ^^
但是它預設的編輯視窗,若在要左邊顯示行號,則會出現一片黑,或者用滑鼠反白,也會出現一片黑,這是預設前景色跟背景色沒設好的關係,沒關係,直接找到 Visual Studio 風格套用,就一切正常了。



 一開始要先開個專案,名稱隨意,然後選擇 Console Application,這就是命令列模式,然後找個地方存起來,我是在桌面弄一個資料夾來放,比較方便。


可以先試跑一下看看,這是 DevC++ 產生的程式碼。



接著來看看如何傳參數給程式,當作第一個範例。我們必須先設定執行的參數,然後再用程式碼去取出來,最後印出來。先找到

執行\參數\要傳給程式的參數

輸入

70230 out70230 20 2 2

 一共5個,然後按確定,如下圖。



然後輸入下列程式碼


 #include <stdio.h>
#include <stdlib.h>
    char msg[128]="\nKG Ver:\t1.0.0\nDate:\t2011-09-30\nUsage:\tKG infile outfile samples chknum continuenum\n";
    char inputfile[32];        //資料檔名
    char outputfile[32];    //輸出檔名
    int samples;            //樣本數
    int chknum;                //比對基數
    int contnum;            //連續次數
 int main(int argc, char *argv[]){
     int i,n;
     system("cls");
    printf("%s",msg);
    //取參數
    strcpy(inputfile,argv[1]);
    strcpy(outputfile,argv[2]);
    samples=atoi(argv[3]);
    chknum=atoi(argv[4]);
    contnum=atoi(argv[5]);
    printf("\nargc = %d\n",argc);
    for(i=0;i<argc;i++)printf("argv[%d] = %s\n",i,argv[i]);
    system("PAUSE");
    return 0;
}

輸入完成後,按下工具列圖示,左上第2排第3個,編譯並執行,就可以看到執行畫面了,很簡單就可以上手的,語法就是標準的C語言。
上面程式碼中,用 system("cls"); 來清畫面,以取代以前 Turbo C 的  clrscr();

執行畫面,如何?正確取得參數並秀出來了。 ^^


附帶一提,我在除錯過程中,發生過 lag 現象,CPU跑到99%,等了許久,原因不明,當時是使用單步執行 F7。若是迴圈太多的話,建議直接看程式跑的結果,或是加入暫停的副程式碼來代替單步執行 F7,如下所示。

 mywait("now, it is at where...");
 ...

 /***************************
    暫停,Enter繼續,除錯用
****************************/
void mywait(char *msg){
    char ch;
    printf("\n%s",msg);
    while ((ch=getchar())!='\n'){}  
}


Dev C++ 網址  http://www.bloodshed.net/dev/devcpp.html
這篇本來昨天就要寫的,結果都在看 youtube,昨天的大熱門新聞,就是天宮一號了,現在有太空站的國家就是美、俄、中 三國了,真強。

天宮一號發射圓滿成功 
http://www.youtube.com/watch?v=IVZSs1GmG5M

這是之前神州七號的太空漫步,回顧一下。
http://www.youtube.com/watch?v=gMxQEHfU6hM&feature=like-suggest&list=UL

沒有留言:

張貼留言

請提供您的寶貴意見 ;-)