Bagaimana untuk Melaksanakan Program dengan Parameter yang Mengandungi Ruang Menggunakan `system()` dalam C ?

Patricia Arquette
Lepaskan: 2024-11-02 02:37:30
asal
941 orang telah melayarinya

How to Execute Programs with Parameters Containing Spaces Using `system()` in C  ?

Panggilan sistem() gagal dengan parameter yang mengandungi ruang

Apabila menggunakan system() untuk melaksanakan atur cara yang mengambil parameter yang mengandungi ruang, a ralat biasa yang dihadapi ialah:

The filename, directory name, or volume label syntax is incorrect.
Salin selepas log masuk

Ini berlaku apabila kedua-dua laluan boleh laku dan laluan parameter mengandungi ruang.

Sebagai contoh, kod berikut:

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

menjana mesej ralat disebabkan oleh kehadiran ruang dalam laluan "pdftotext" dan laluan fail PDF.

Masalah ini timbul kerana system() menghantar hujahnya kepada cmd /k, yang mentafsir aksara petikan pertama sebagai permulaan nama boleh laku dan watak petikan kedua sebagai akhir nama boleh laku. Akibatnya, baris arahan dihuraikan secara tidak betul, membawa kepada ralat.

Untuk menyelesaikan isu ini, arahan itu boleh disertakan dalam petikan berganda:

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

Sebagai alternatif, cmd /S boleh digunakan untuk memaksa baris arahan ditafsirkan dengan ketat tanpa peraturan penghuraian khas:

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

Dengan menggunakan penyelesaian ini, panggilan sistem() boleh berjaya melaksanakan program dengan parameter yang mengandungi ruang.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Program dengan Parameter yang Mengandungi Ruang Menggunakan `system()` dalam 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!