在C 中透過system() 呼叫外部應用程式時,確保正確處理下列參數至關重要:包含空格。如果可執行路徑和參數都包含空格,則可能會發生錯誤。
system() 基本上使用 cmd /C 執行指定的命令。處理命令列時,cmd 遵循有關引號字元的某些規則。預設情況下,它會刪除前導和尾隨引號,將剩餘的字串視為可執行檔名稱。
要解決此問題,必須將命令包含在一組附加的雙引號:
<code class="cpp">system("\"\""CMD\"" \""ARG1\"" \""ARG2\"\"");</code>
這種額外的引用級別可確保cmd 正確解釋每個參數,無論是否存在空格。
另一種方法涉及使用批次檔來執行具有所需參數的命令。可以使用以下內容建立批次檔:
cd PATH_TO_DIR EXECUTABLE_NAME ARG1 ARG2
透過以此批次檔名作為參數呼叫 system(),即使參數包含空格,該指令也會如預期執行。
為了確保與不同環境和 shell 實現的兼容性,建議在使用 system() 時包含 /S 開關。此開關強制 cmd 嚴格依據 cmd 文件中所述的情況 2 解析命令列。
範例:
<code class="cpp">system("cmd /S /C \"\""CMD\"" \""ARG1\"" \""ARG2\"\"");</code>
以上是如何使用 C system() 執行參數包含空格的外部應用程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!