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

Linda Hamilton
Lepaskan: 2024-10-30 15:27:26
asal
647 orang telah melayarinya

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.
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk
  • 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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!