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

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

Linda Hamilton
Linda Hamilton原創
2024-10-30 15:27:26637瀏覽

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

C system() 函數錯誤,參數中存在空格

問題陳述

C 中使用system() 函數運行可執行檔時參數,如果可執行檔的路徑和作為參數傳遞的檔案的路徑中都有空格,則會發生錯誤。錯誤訊息如下:

The filename, directory name, or volume label syntax is incorrect.

說明

system() 函數透過將系統指令傳遞給 Windows 指令處理器 (cmd) 來執行系統指令。當指令包含空格時,指令處理器會將第一個和最後一個雙引號之間的所有內容解釋為單一參數。但是,在這種情況下,可執行檔案路徑周圍的雙引號和參數檔案路徑周圍的雙引號會導致衝突。

解決方案

要解決此問題,需要使用一組額外的雙引號必須添加引號以括住整個命令。這樣,命令處理器會將這些最外層雙引號內的所有內容視為單一參數,即使它包含空格和其他雙引號。

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

附加說明

  • cmd可以將/S /C 標誌加到system() 函數呼叫中,以確保字串始​​終被解析為情況2 場景,其中雙引號被視為參數的一部份。
<code class="cpp">system("cmd /S /C \"\"D:\test\" nospaces \"text with spaces\"\"");</code>
  • 使用這種引用機制可以克服可執行檔和參數路徑中空格引起的錯誤。

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

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