Fungsi sistem C() Tidak Berfungsi Akibat Ruang dalam Parameter
Apabila menggunakan fungsi sistem() dalam C untuk melaksanakan program dengan parameter mengandungi ruang, ia mungkin mengakibatkan ralat mengenai nama fail, nama direktori atau sintaks label volum yang salah. Isu ini timbul apabila kedua-dua laluan boleh laku dan laluan fail parameter mengandungi ruang.
Contohnya:
<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>
Dalam kod ini, fungsi sistem() cuba melaksanakan "pdftotext" boleh laku dengan dua parameter. Walau bagaimanapun, kehadiran ruang dalam kedua-dua laluan boleh laku dan laluan parameter mencetuskan ralat.
Punca Isu
Fungsi sistem() menghantar argumennya kepada arahan cmd /k, yang mentafsirkan hujah mengikut peraturan tertentu. Salah satu peraturan ini menyatakan bahawa jika baris arahan mengandungi betul-betul dua aksara petikan, tiada aksara khas antara petikan dan rentetan ialah nama fail boleh laku, maka aksara petikan itu dikekalkan.
Walau bagaimanapun, dalam kod contoh, rentetan antara petikan mengandungi ruang, melanggar peraturan. Akibatnya, arahan cmd /k mentafsir rentetan sebagai nama boleh laku yang tidak sah dan menghasilkan ralat.
Penyelesaian
Untuk menyelesaikan isu ini, sertakan keseluruhan arahan dalam tambahan petikan:
<code class="cpp">system("\"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
Ini memastikan bahawa keseluruhan rentetan arahan dihuraikan sebagai satu hujah, menghalang arahan cmd /k daripada menyalahtafsirkannya.
Selain itu, untuk menjamin bahawa rentetan sentiasa dihuraikan mengikut peraturan yang betul, anda boleh memasukkan suis /S:
<code class="cpp">system("cmd /S /C \"\"C:\Users\Adam\Desktop\pdftotext\" -layout \"C:\Users\Adam\Desktop\week 4.pdf\"\"");</code>
Atas ialah kandungan terperinci Mengapakah fungsi sistem C() gagal apabila parameter mengandungi ruang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!