电竞比分网-中国电竞赛事及体育赛事平台

分享

C語(yǔ)言核心技術(shù)

 lllsztz 2019-12-14

system函數(shù)調(diào)用系統(tǒng)命令

system函數(shù)用于C程序中調(diào)用各大操作系統(tǒng)的命令和應(yīng)用程序,被調(diào)用的命令和應(yīng)用程序以字符串的方式作為system函數(shù)的參數(shù)傳入,實(shí)現(xiàn)讀取用戶(hù)輸入的命令,并執(zhí)行該命令。在windows上運(yùn)行該程序時(shí)可以傳入notepad,calc等等實(shí)現(xiàn)程序調(diào)用。而Linux和macOS上也有自己的命令可以提供給system函數(shù)來(lái)調(diào)用。

這里編寫(xiě)一個(gè)交互式程序:通過(guò)借助C語(yǔ)言的scanf函數(shù)讀取用戶(hù)在終端的命令,然后調(diào)用system函數(shù)來(lái)執(zhí)行對(duì)應(yīng)的命令。

如果你的開(kāi)發(fā)環(huán)境不是Windows10 1903和Visual Studio 2019,可以刪除#define _CRT_SECURE_NO_WARNINGS。

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>/* 使用system函數(shù)調(diào)用各大操作系統(tǒng)的命令 @author liuguanglei ittimelinedotnet@gmail.com @website ittimeline.net @version 2019/10/17*/int main(int argc, char* argv[]){ // 提示用戶(hù)輸入執(zhí)行的命令 printf('請(qǐng)輸入需要執(zhí)行的命令\n'); //定義字符串保存用戶(hù)輸入命令 char command[100] = {0}; //讀取用戶(hù)從鍵盤(pán)輸入的命令字符串,并保存到command中 scanf('%s',command); //執(zhí)行命令 system(command); system('pause'); return 0;}

因?yàn)閟ystem函數(shù)位于stdlib.h頭文件中,意味著它是一個(gè)可以跨平臺(tái)使用的函數(shù)。例如在Ubuntu下使用gedit命令調(diào)用文本編輯器

C語(yǔ)言核心技術(shù)-system函數(shù)的使用

但是各大操作系統(tǒng)的命令和應(yīng)用程序是不相同的,例如在Windows上使用system函數(shù)傳遞字符串參數(shù)'notepad'時(shí)可以打開(kāi)記事本,而移植到了類(lèi)Unix上則無(wú)法調(diào)用記事本。

system函數(shù)阻止Visual Studio 2019閃退

在Visual Studio 2019中運(yùn)行程序可以通過(guò)快捷鍵F5直接運(yùn)行,也可以通過(guò)點(diǎn)擊本地Windows調(diào)試器運(yùn)行。

C語(yǔ)言核心技術(shù)-system函數(shù)的使用

但是發(fā)現(xiàn)在運(yùn)行helloworld后程序有閃退現(xiàn)象,即程序運(yùn)行時(shí)打開(kāi)了終端后立即退出,其原因是程序運(yùn)行是printf函數(shù)默認(rèn)輸出數(shù)據(jù)到終端,因此Visual Studio 2019開(kāi)啟了終端,printf輸出數(shù)據(jù)完成以后,程序遇到return語(yǔ)句并退出,因此終端也會(huì)隨之退出,因?yàn)閺棾鼋K端和退終端的時(shí)間非常短,所有感覺(jué)有閃退現(xiàn)象。

為了解決這一問(wèn)題,首先需要在源文件使用#include <stdlib.h>包含標(biāo)準(zhǔn)庫(kù)頭文件,然后在main函數(shù)的最后一行加上system('pause'),這樣程序運(yùn)行時(shí)不會(huì)立即退出,而是等到用戶(hù)輸入任意鍵(一般習(xí)慣按回車(chē)鍵)才會(huì)退出。

解決 helloworld在Visual Studio 2019運(yùn)行的閃退問(wèn)題

#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) {    printf('Windows10 1903 & Visual Studio 2019 Hello World With C \n');    system('pause');    return 0;}

再次運(yùn)行程序時(shí),在程序的末尾會(huì)輸出一句請(qǐng)按任意鍵繼續(xù)...

C語(yǔ)言核心技術(shù)-system函數(shù)的使用

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多