Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengendalikan Ruang dalam Parameter Apabila Menggunakan Fungsi `system()` C?

Bagaimana untuk Mengendalikan Ruang dalam Parameter Apabila Menggunakan Fungsi `system()` C?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 15:27:26695semak imbas

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

Ralat Fungsi C system() dengan Ruang dalam Parameter

Pernyataan Masalah

Apabila menggunakan fungsi system() dalam C untuk menjalankan boleh laku dengan parameter, ralat berlaku jika terdapat ruang dalam kedua-dua laluan boleh laku dan laluan fail yang diluluskan sebagai parameter. Mesej ralat berbunyi:

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

Penjelasan

Fungsi sistem() melaksanakan perintah sistem dengan menghantarnya kepada pemproses arahan Windows (cmd). Apabila arahan mengandungi ruang, pemproses arahan mentafsirkan segala-galanya antara petikan berganda pertama dan terakhir sebagai satu hujah. Walau bagaimanapun, dalam kes ini, petikan berganda di sekitar laluan boleh laku dan petikan berganda di sekitar laluan fail parameter menyebabkan konflik.

Penyelesaian

Untuk menyelesaikan isu, set tambahan berganda petikan mesti ditambah untuk melampirkan keseluruhan arahan. Dengan cara ini, pemproses arahan menganggap segala-galanya dalam petikan berganda terluar ini sebagai satu hujah, walaupun ia mengandungi ruang dan petikan berganda lain.

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

Nota Tambahan

  • Cmd Bendera /S /C boleh ditambah pada panggilan fungsi system() untuk memastikan rentetan sentiasa dihuraikan sebagai senario kes 2, di mana petikan berganda dianggap sebagai sebahagian daripada hujah.
<code class="cpp">system("cmd /S /C \"\"D:\test\" nospaces \"text with spaces\"\"");</code>
  • Menggunakan mekanisme petikan ini mengatasi ralat yang disebabkan oleh ruang dalam laluan kedua-dua boleh laku dan parameter.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ruang dalam Parameter Apabila Menggunakan Fungsi `system()` C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn