首頁 > 後端開發 > C++ > 主體

當參數包含空格時,為什麼 C system() 函數會失敗?

Barbara Streisand
發布: 2024-10-28 06:34:02
原創
471 人瀏覽過

Why does the C   system() function fail when parameters contain spaces?

C 語言中的system() 函數由於參數中存在空格而導致的故障

使用C 語言中的system() 函數執行帶有參數的程式時包含空格,可能會​​導致有關不正確的檔案名稱、目錄名稱或磁碟區標語法的錯誤。當可執行檔的路徑和參數檔路徑都包含空格時,就會出現此問題。

例如:

在此程式碼中,system() 函數嘗試執行「pdftotext」具有兩個參數的可執行檔。但是,可執行路徑和參數路徑中都存在空格會觸發錯誤。

問題原因

system() 函數將其參數傳遞給cmd /k 指令,依照特定規則解釋參數。其中一條規則規定,如果命令列恰好包含兩個引號字符,引號之間沒有特殊字符,且該字串是可執行檔的名稱,則保留引號字符。

但是,在範例程式碼中,引號之間的字串包含空格,違反了規則。因此,cmd /k 命令將該字串解釋為無效的可執行檔名稱並產生錯誤。

解決方案

要解決此問題,請將整個命令括在附加文件中引號:

這確保整個命令字符字串被解析為一個參數,防止cmd /k 指令誤解它。

此外,為了確保字串始​​終被解析根據正確的規則,您可以包含 /S 開關:

以上是當參數包含空格時,為什麼 C system() 函數會失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!