根據調用需求,可以分為兩種:
一、僅執行系統命令,不需要該命令的列印結果。
這種情況可以用system函數。形式為
system(cmd);
其中cmd為char*類型的字元串,包含要執行的命令,命令的執行結果會輸出到標准輸出。
比如
system("mkdirtest");
這個執行,會在當前文件夾下創建test文件夾。
二、需要命令執行的列印。
雖然同樣可以使用system並重定向到文件,然後打開文件讀取,最終刪除文件。但這樣做比較繁瑣,更好的做法是使用popen。
FILE *fp = popen(cmd);
執行cmd中的命令,然後可以以C文件操作方式,讀取命令的輸出結果。比如:
if((fp=popen("pwd","r"))==NULL)//執行獲取當前目錄的系統命令pwd。
{
printf("執行失敗 ");//fp為NULL表示命令執行失敗。
}
else
{
chars[100];
while(fgets(s,100,fp))//獲取文件內容。
printf("%s",s);//輸出結果。
pclose(fp);//關閉。
}
❷ 在windows命令行中如何運行c程序的文本
1、打開命令行界面:鍵盤win + r ,輸入cmd,回車。即可打開命令行。
❸ C++中調用命令行,而命令行內包含帶空格的目錄名怎麼辦
有兩個辦法來解決這個問題
1)用縮寫。比如c:\Program Files縮寫為c:\Progra~1
再來刨根問底查查這個命名是否有規則,於是找到:
文件夾(sub-directry)名稱,以前是不允許帶空白的,後來允許帶空白,但由於有了空白,許多命令出現二義性,於是採用雙引號括起來的辦法。例如:
cd Documents and Settings
按老定義 等於 CD Documents, CD 命令找不到名叫Documents 的 directry
於是採用雙引號:
cd 「Documents and Settings「
但用到 set PATH 時很麻煩,名字太長,雙引號時常括錯。於是採用8個字元縮寫,即寫頭六個字母(略去空白),另加波浪號和1。例如:
"Documents and Settings「 -- DOCUME~1
"Local Settings" -- LOCALS~1 (注意略去空白,用了第二個詞的字母,湊成六個,再加波浪號和1)。
於是,這種方法成了規定。
再來個十萬個為什麼的下一個,如果多個文件前6字元一樣怎麼辦?為什麼最後是1而不是0或者其他數字呢?看看這個例子
假設下面是你的C盤根目錄中的文件夾:
Program Files
Progra file
Progra zhang
則三個目錄分別表示為:C:\Progra~1; C:\Progra~2; C:\Progra~3;
2)繞過去,創建一個鏡像。例如在cmd中輸入 subst w: "C:\Documents and Settings\hopeshared"。然後就可以直接用w:\替代C:\Documents and Settings\hopeshared了
❹ VC++調用命令行怎麼辦system和shellexecute的問題
system("cmd /c xxx.zip xxxx.zip");
無論你用shellExecute還是用system多要加/c 這個參數 才能執行命令
❺ 在cmd中輸入哪幾句話把c語言編譯和運行出來
1.打開命令行界面:鍵盤win+r,輸入CMD,回車。您可以打開命令行。