首頁 >後端開發 >C++ >使用 C `system()` 函數時如何處理參數中的空格?

使用 C `system()` 函數時如何處理參數中的空格?

Susan Sarandon
Susan Sarandon原創
2024-10-30 05:12:02288瀏覽

How to Handle Spaces in Parameters When Using the C   `system()` Function?

C system() 函數和處理參數空間

在C 中使用system() 函數執行程式時,必須請注意命令和參數參數中的空格。如果可執行路徑和參數路徑中都存在空格,則可能會導致錯誤。

在提供的程式碼中:

<code class="cpp">system("\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"");</code>

錯誤“檔案名稱、目錄名稱、或卷標語法不正確”,因為system() 命令由於不帶引號的路徑而將整個字串識別為可執行檔的名稱。要修正此問題,請按如下方式引用整個命令字串:

<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>

此外,了解 Windows 中 system() 函數的行為至關重要。預設情況下,它使用“cmd /C”調用命令,該命令根據以下規則處理引號:

  • 如果行以引號開頭和結尾,未指定/S 開關,則保留引號,並且引用的文字是可執行檔名。
  • 否則,如果僅引用第一個字符,則將刪除開頭引號,並從行尾刪除結尾引號,並保留之後的所有文字。

在給定的範例中,不滿足第一條規則,因此system() 函數將"C:UsersAdamDesktoppdftotext" -layout "C:UsersAdamDesktopweek 4.pdf" 解釋為可執行檔名稱,從而產生錯誤。

為了確保正確的命令處理,建議用雙引號引用整個字串,並可能添加 /S 開關以確保完整性:

<code class="cpp">system("cmd /S /C \"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>

以上是使用 C `system()` 函數時如何處理參數中的空格?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn