頁:
[1]
2
關於 int main(int argc, char *argv[ ]) ...
本帖最後由 kev72806 於 2013-7-6 02:39 AM 編輯命令列參數的使用
【前言】:
C語言提供一個可以在命令列中將參數引入的功能。也就是說,我們可以在MS-DOS模式下,在執行檔名稱的後面,可以填入需要的參數。
舉例:假設在MS-DOS模式下,鍵入如下指令:
type abc.txt
【說明】:
type指令的作用是「顯示檔案的內容」。
type abc.txt即顯示abc.txt這個文字檔的內容。
【目的】:為了使主程式能夠接收使用者輸入的參數,在主函數main( )中,必須有適合的格式。
int main(argc,argv)
int argc;
char *argv[];
{
return 0;
}
或是
int main(int argc, char *argv[])
{
return 0;
}
命令列參數的格式
命令列參數的格式
【說明】:
1、argc 與 argv為C語言的關鍵字,是專門用在命令列的參數名。
2、argc是argument count(參數總和)的縮寫,代表包括指令本身的參數個數。系統會自動計算所輸入的參數個數。
3、argv則是argument value的縮寫。代表參數值。也就是使用者在命令列中輸入的字串,每個字串以空白相隔。同時,系統會自動將程式本身的名稱指定給argv,再將程式名稱後面所接續的參數依序指定給argv、argv….。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>
範例一:印出命令列參數的內容(show.c)
#include <stdio.h>#include <stdlib.h>
int main(int argc, char *argv[ ])
{
int i ;
/* 印出命令列參數的內容 */
printf("The value of argc is %d \n",argc);
for(i=0;i<argc;i++)
printf("argv[%d]=%s\n",i,argv);
system(“PAUSE”);
return 0;
}
執行:
c:\> show Hello my word
/*** 註1 ***/
執行時,請你用 命令提示字元 執行,然後鍵入 show hello my word
就是開始→執行→ cmd
然後我所有預設的執行目錄(就是我所生成的 show.exe ) 都是放在 C:\> 底下的
如果你想在 D:\My_Porgramming> 執行,
就把你的 porgramming 放在該目錄底下
/*** 註2 ***/
這個範例可能還不夠清楚
我再發一個更清楚的範例給你...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
範例二:印出指定的檔案內容(printfile.c)
#include <stdio.h>#include <stdlib.h>
int main(int argc, char *argv[ ])
{
FILE *fptr;
char ch;
if(argc>1) /* 命令列有參數輸入時 */
{
fptr=fopen(argv,"r"); /* 開啟檔案 */
if(fptr!=NULL) /* 檔案開啟成功 */
{
while((ch=getc(fptr))!=EOF) /* 判斷是否到達檔尾 */
printf("%c",ch); /* 一次印出一個字元 */
fclose(fptr); /* 關閉檔案 */
}
else /* 檔案開啟失敗 */
printf("File Opening Failure!!\n");
}
system(“PAUSE”);
return 0;
}
執行:
c:\> printfile abc.txt
/**註1**/
請自行編一abc.txt檔。
/**註2**/
詳細的運行方式請參考上面的方式
/**註3**/
最後再發一個 example 給你,
(基本上有這二個 example 加上原文說明應該都懂了)
[ 本帖最後由 goodbye_mylove 於 2007-10-2 01:11 PM 編輯 ]...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
範例三:複製檔案內容(fcopy.c)
#include <stdio.h>#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fptr1,*fptr2;
char ch;
if(argc>2) /* 命令列有參數輸入時 */
{
fptr1=fopen(argv,"r"); /* 開啟檔案 */
fptr2=fopen(argv,"w");
if((fptr1!=NULL) && (fptr2!=NULL)) /* 檔案開啟成功 */
{
while((ch=getc(fptr1))!=EOF) /* 判斷是否到達檔尾 */
putc(ch,fptr2); /* 一次拷貝一個字元 */
fclose(fptr1); /* 關閉檔案 */
fclose(fptr2);
printf("File copy successful!!\n");
}
else /* 檔案開啟失敗 */
printf("File Opening Failure!!\n");
}
else
printf("File copy Failure!!\n");
system(“PAUSE”);
return 0;
}
執行:
c:\> fcopy abc.txt des.txt
/** 註 **/
我已努力表達裡面的意義了
再看不懂的話請自行再查詢資料
我很笨,
表達能力沒那麼強!...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
回復 #4 goodbye_mylove 的帖子
謝謝大大的分享我本來不知道的觀念
現在終於明白ㄌ
:biggrin: :biggrin:<br><br><br><br><br><div></div> 感謝大大的解說~~!!:24: :24: :24: 還蠻詳細的講解...打這麼多真是辛苦...謝謝你的分享... 對初學者的我很有參考價值 {:1_newredface:} 本帖最後由 icekeeper225625 於 2009-10-11 04:34 PM 編輯
我還是不懂耶......
真正寫起來很奇怪
這是我的程式碼
#include <stdio.h>
int main(int argc,char *argv[])
{
int nagi, tomo, sanae;
{
printf("*");
for (tomo = 1;tomo <= argv;tomo++)
printf("%d", tomo);
{
for (nagi = 1;nagi <= argv;nagi++)
{
printf("\n");
printf("%d",nagi);
for (sanae = 1;sanae <= argv;sanae++)
printf("-",sanae);
}
printf("\n");
}
}
return 0;
}
要怎麼做才能把命令列成功指出來呢@@
我是寫99乘法表
倒數第二個printf裡是% 2 d
它都給我顯示-.........<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> 謝謝大大!!
^^
感覺很實用!!<br><br><br><br><br><div></div> 謝謝大大的分享
C++真的很難懂
不過還是要好好學! 謝謝樓主的解說!正在想有沒有什麼範例可以看。你真的是救星 感謝樓主的分享!讓我能建立更全盤的觀念,還有範例可以參考!
附帶一提,在show的範例中的印出好像有誤印不出正確字串! 如果是用fread和fwrite去寫的話
該如何去編寫???
我試了好多遍都是 else 的回應 icekeeper225625 發表於 2009-10-11 04:31 PM static/image/common/back.gif
我還是不懂耶......
真正寫起來很奇怪
這是我的程式碼
argv 是char*的型態 不是integer的型態 所以會有問題
<br><br><br><br><br><div></div>
頁:
[1]
2