सी में सिस्टम() के माध्यम से बाहरी अनुप्रयोगों को लागू करते समय, तर्कों का उचित संचालन सुनिश्चित करना महत्वपूर्ण है रिक्त स्थान समाहित करें. यदि निष्पादन योग्य पथ और तर्क दोनों में रिक्त स्थान हैं, तो एक त्रुटि उत्पन्न हो सकती है।
system() अनिवार्य रूप से cmd /C का उपयोग करके निर्दिष्ट कमांड निष्पादित करता है। कमांड लाइन को संसाधित करते समय, सीएमडी उद्धरण वर्णों के संबंध में कुछ नियमों का पालन करता है। डिफ़ॉल्ट रूप से, यह अग्रणी और अनुगामी उद्धरणों को हटा देता है, शेष स्ट्रिंग को निष्पादन योग्य नाम के रूप में मानता है।
इस समस्या को हल करने के लिए, कमांड को एक अतिरिक्त सेट में संलग्न किया जाना चाहिए दोहरे उद्धरण चिह्न:
system("\"\""CMD\"" \""ARG1\"" \""ARG2\"\"");
उद्धरण का यह अतिरिक्त स्तर यह सुनिश्चित करता है कि सीएमडी रिक्त स्थान की उपस्थिति की परवाह किए बिना, प्रत्येक तर्क की सही व्याख्या करता है।
एक वैकल्पिक दृष्टिकोण में वांछित तर्कों के साथ कमांड को निष्पादित करने के लिए बैच फ़ाइल का उपयोग करना शामिल है। बैच फ़ाइल को निम्नलिखित सामग्री के साथ बनाया जा सकता है:
cd PATH_TO_DIR EXECUTABLE_NAME ARG1 ARG2
इस बैच फ़ाइल नाम के साथ सिस्टम() को तर्क के रूप में कॉल करके, कमांड को इरादे के अनुसार निष्पादित किया जाएगा, यहां तक कि रिक्त स्थान वाले तर्कों के साथ भी।
विभिन्न वातावरणों और शेल कार्यान्वयनों के साथ अनुकूलता सुनिश्चित करने के लिए, सिस्टम() का उपयोग करते समय /एस स्विच को शामिल करने की अनुशंसा की जाती है। यह स्विच सीएमडी को केस 2 के आधार पर कमांड लाइन को सख्ती से पार्स करने के लिए बाध्य करता है जैसा कि सीएमडी दस्तावेज़ में वर्णित है।
उदाहरण:
system("cmd /S /C \"\""CMD\"" \""ARG1\"" \""ARG2\"\"");
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3