C system() 呼叫因包含空格的參數而失敗
使用system() 執行參數包含空格的程式時,遇到的常見錯誤是:
The filename, directory name, or volume label syntax is incorrect.
當可執行路徑和參數路徑都包含空格時會出現這種情況。
例如以下程式碼:
<code class="cpp">#include <stdlib.h> #include <conio.h> int main() { system("\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\""); _getch(); }</code>
產生由於「pdftotext」路徑和 PDF 檔案路徑中存在空格而出現錯誤訊息。
出現此問題的原因是system() 將其參數傳遞給cmd /k,它將第一個引號字元解釋為可執行檔案名稱的開頭和第二個引號字元作為可執行檔名稱的結尾。因此,命令列解析錯誤,導致錯誤。
要解決此問題,可以將命令用雙引號括起來:
<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
或者cmd /S可用於強制嚴格解釋命令行,無需特殊的解析規則:
<code class="cpp">system("cmd /S /C \"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
透過應用這些解決方案,system() 呼叫可以成功執行參數包含空格的程式。
以上是如何在 C 中使用「system()」執行參數包含空格的程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!