4 回答

TA貢獻1966條經驗 獲得超4個贊
例如,你編譯連接后得到可執行文件名為main.exe
它的源文件如下:
#include "stdafx.h"
int main(int argc, char* argv[])
{
for (int i=0;i<argc;i++)
printf("%s\n",argv[i]);
return 0;
}
運行的時候可以這樣:
在開始->運行中輸入cmd,啟動命令行,進入到main.exe所在的目錄,這時用dir命令可以看到這個文件.如果看不到,則說明當前目錄還不是可執行文件所在的目錄,需要更改,用命令cd進行切換.或者設置一下環境變量.
然后,輸入,main.exe this is a test for main.
如果成功的話,就會輸出.
main
this
is
a
test
for
main
至于,你要將實參傳給main,可以這樣實現.
另外寫一個控制臺程序,傳實參以調用剛才的可執行文件.如:
#include "stdafx.h"
#include "windows.h"
int main(int argc, char* argv[])
{
WinExec("main this is a test for main",SW_SHOWNORMAL);
return 0;
}
如上所示,這個程序就是調用main.exe,并傳一個字符串給它,this is a test for main.
在命令行中直接輸入相應的可執行文件就行了,不需要再傳實參了.
如果在C#中,就要參考一下Process這個類了.

TA貢獻1795條經驗 獲得超7個贊
不能這樣用,main函數的原型是
int main(int argc,char *argv[]);
這里
argc是參數個數.
argv[]是參數的具體內容
main里面的這兩個參數的作用是從命令行獲得
舉個例子,你的生成EXE文件在目錄 f:\test\debug\,文件名叫 test.exe
那么,你在計算機中,“運行” - “cmd”,在彈出來的黑窗口里,輸入
F:(回車)
cd test\debug
然后執行
test.exe param1 param2
(上面輸入了兩個參數)
則你的這個test.exe程序的main函數main(int argc,char *argv[])中
argc=3; // 三個參數,第一個是程序名,后面二個是自己輸入的其它參數
argv[0]="test.exe";
argv[1]="param1";
argv[2]="param2";
你可以試著把 printf("%s",*(aa+1))改為printf("%s",*aa);這樣就是輸出第一個參數,即你的程序名(在你直接用IDE調試時,是直接包含了路徑的,因為沒有切換目錄的過程。)你輸出第二個是不存在的參數。
你把那兩個變量放在外面是全局變量,不是局部變量,main只要用無參數的那個就行了。當你把main的形參中的參數命名成與那個全局變量相同時,起作用的是這個局部變量,而main接收的是外部的輸入。
根據你的需要,實際上程序應該是這樣的
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
char *p="132";
char **a=&p;
int main()
{
char **aa=a;
printf("%s\n",*aa ); // 想輸出132,不應該是 *(aa+1)
return 0;
}

TA貢獻1772條經驗 獲得超8個贊
1、main函數可以不帶參數,也可以帶參數,這個參數可以認為是 main函數的形式參數。
C語言規定main函數的參數只能有兩個,還規定argc(第一個形參)必須是整型變量,argv( 第二個形參)必須是指向字符串的指針數組。加上形參說明后,main函數的函數頭應寫為:
int main (int argc,char *argv[])
2、由于main函數不能被其它函數調用,因此不可能在程序內部取得實際值。實際上,main函數的參數值是從操作系統命令行上獲得的。當要運行一個可執行文件時,在DOS提示符下鍵入文件名,再輸入實際參數即可把這些實參傳送到main的形參中去。
DOS提示符下命令行的一般形式為:
C:\>可執行文件名 參數 參數……;

TA貢獻1808條經驗 獲得超4個贊
main函數可以不帶參數,也可以帶參數,這個參數可以認為是 main函數的形式參數。C語言規定main函數的參數只能有兩個,習慣上這兩個參數寫為argc和argv。因此,main函數的函數頭可寫為:
main (argc,argv)
C語言還規定argc(第一個形參)必須是整型變量,argv( 第二個形參)必須是指向字符串的指針數組。加上形參說明后,main函數的函數頭應寫為:
main (int argc,char *argv[])
由于main函數不能被其它函數調用,因此不可能在程序內部取得實際值。那么,在何處把實參值賦予main函數的形參呢? 實際上,main函數的參數值是從操作系統命令行上獲得的。當我們要運行一個可執行文件時,在DOS提示符下鍵入文件名,再輸入實際參數即可把這些實參傳送到main的形參中去。
DOS提示符下命令行的一般形式為:
C:\>可執行文件名 參數 參數……;
但是應該特別注意的是,main 的兩個形參和命令行中的參數在位置上不是一一對應的。因為,main的形參只有二個,而命令行中的參數個數原則上未加限制。argc參數表示了命令行中參數的個數(注意:文件名本身也算一個參數),argc的值是在輸入命令行時由系統按實際參數的個數自動賦予的。
例如有命令行為:
C:\>E24 BASIC foxpro FORTRAN
由于文件名E24本身也算一個參數,所以共有4個參數,因此argc取得的值為4。argv參數是字符串指針數組,其各元素值為命令行中各字符串(參數均按字符串處理)的首地址。 指針數組的長度即為參數個數。數組元素初值由系統自動賦予。其表示如圖所示:
【例】
main(int argc,char *argv){
while(argc-->1)
printf("%s",*++argv);
}
本例是顯示命令行中輸入的參數。如果上例的可執行文件名為e24.exe,存放在A驅動器的盤內。因此輸入的命令行為:
C:\>a:e24 BASIC foxpro FORTRAN
則運行結果為:
BASIC
foxpro
FORTRAN
該行共有4個參數,執行main時,argc的初值即為4。argv的4個元素分為4個字符串的首地址。執行while語句,每循環一次argv值減1,當argv等于1時停止循環,共循環三次,因此共可輸出三個參數。在printf函數中,由于打印項*++argv是先加1再打印, 故第一次打印的是argv[1]所指的字符串BASIC。第二、三次循環分別打印后二個字符串。而參數e24是文件名,不必輸出。
添加回答
舉報