[Powered by Google Translate] [तर्क आदेश पंक्ति]
[क्रिस्टोफर Bartholomew हार्वर्ड विश्वविद्यालय]
[- CS50.TV यह CS50 है]
एक कार्यक्रम के लिए एक उपयोगी सुविधा उपयोगकर्ता इनपुट को स्वीकार करने के लिए है.
इस प्रकार अब तक, हम CS50 पुस्तकालय के भीतर कुछ कार्यों का पता लगाया है
उपयोगकर्ता इनपुट, स्वीकार करने के लिए इस तरह के रूप में "स्ट्रिंग मिलता है,"
जो उपयोगकर्ता प्रेरित है, जबकि आवेदन चल रहा है, एक स्ट्रिंग के लिए.
>> हालांकि, ऐसे मामले हैं जहाँ आप अपने कार्यक्रम इनपुट प्रदान करना चाहते हैं
इससे पहले कि यह वास्तव में चल रहा है.
इस तरह, आप अपने उपयोगकर्ता से अतिरिक्त जानकारी पूछने की जरूरत नहीं
जबकि एक साधारण कार्य निष्पादित.
उदाहरण के लिए ले लो, mv या यूनिक्स चाल में आदेश.
इस आदेश के उपयोगकर्ता के लिए एक स्थान से दूसरे करने के लिए एक फ़ाइल को स्थानांतरित करने के लिए अनुमति देता है.
मैनुअल पृष्ठों के अनुसार, mv दो कमांड लाइन तर्क स्वीकार करता है:
फ़ाइल है कि ले जाया जा रहा है और स्थान फाइल करने के लिए ले जाया जा रहा है.
तो इस उदाहरण दो तर्क के साथ एक आदेश दिया है.
तो कैसे हम अपने सी कार्यक्रम बता इन कमांड लाइन तर्क का उपयोग करने के लिए?
>> खैर, यह पता चला है कि मुख्य है, जो हम सभी सी कार्यक्रमों में उपयोग एक रहस्य है.
Argc और argv: मुख्य दो पैरामीटर स्वीकार करता है.
चलो इन शर्तों पर जाना.
>> 1 पैरामीटर, argc, जो तर्क गिनती के लिए खड़ा है,
पूर्णांक के एक डेटा प्रकार है.
argc पैरामीटर तर्कों की संख्या आदेश सहित, शामिल हैं.
आदेश में हमारे कदम, हालांकि हम केवल दो तर्क प्रदर्शित किया है,
argc मूल्य 3 होगा.
दूसरा पैरामीटर, argv, जो तर्क वेक्टर के लिए खड़ा है,
चार संकेत है कि तार करने के लिए बात की एक सरणी है.
>> इसका मतलब यह है कि argv में प्रत्येक तत्व, शून्य से शुरू,
कमान और तर्क होता है.
उदाहरण के लिए, argv [0], जो मैं शून्य argv के रूप में उल्लेख करता हूँ,
हमेशा आदेश है कि चलाया जा रहा है शामिल होंगे -
इस मामले में, एमवी.
argv [1] 1 तर्क, file.txt होते हैं,
और argv [2] दूसरा तर्क शामिल होंगे, ~ / / CS50.
argv के अंतिम तर्क हमेशा रिक्त हो जाएगा.
तो चलो इन कमांड लाइन तर्क को लागू करने.
पिछले अभ्यास में हम शून्य रखा गया है, जिसका अर्थ है कुछ भी नहीं के रूप में मुख्य पैरामीटर.
हालांकि, आदेश में करने के लिए हमें कमांड लाइन तर्क का उपयोग करने के लिए,
हम मुख्य int argc, चार * argv] [शून्य और जगह के अंदर दूर करने की जरूरत है.
अब argv से पूरे तत्व है, जो अपने तर्क का उपयोग,
आप बस पुनरावृति कर सकते हैं या इस तरह सरणी के माध्यम से पाश.
तो, मुख्य शरीर के अंदर हम आगे जाना है और पाश के लिए एक प्रकार की जा रहे हैं:
के लिए (int i = 0, मैं + +, मैं <argc).
>> हम एक धनु धनुकोष्ठक यहाँ की जरूरत नहीं है क्योंकि हम केवल कोड की एक पंक्ति को क्रियान्वित कर रहे हैं
इस लूप के शरीर के भीतर.
हम आगे जाना है और टैब मारा जाएगा,
तो printf लिखें ("argv [% d], के लिए एक पूर्णांक मान का प्रतिनिधित्व करते हैं,
% है, स्ट्रिंग के लिए, तो नई लाइन चरित्र.
तो हम printf प्रदान करते हैं मैं पाश की वर्तमान यात्रा के लिए
और argv [i] वर्तमान कमांड लाइन तर्क की स्ट्रिंग प्रतिनिधित्व के लिए.
जब हम यह दो तर्क के साथ चलाने के लिए, हम टर्मिनल में प्रदर्शित किया जा रहा है तर्क देखेंगे.
इससे पहले हमने कहा कि argv चार संकेत की एक सरणी का आयोजन किया.
>> तो, अगर यह मामला है, हम तो कैसे प्रत्येक तर्क में अलग - अलग पात्रों का उपयोग?
उदाहरण के लिए, क्या हुआ अगर मैं पहली बहस में एक विशिष्ट चरित्र के लिए देखना चाहता था?
खैर, जवाब है कि हम एक नेस्टेड पाश को लागू करने की आवश्यकता है
कि तब तर्क स्ट्रिंग में तत्वों में से प्रत्येक के माध्यम से पुनरावृति जाएगा.
यह है कि आप इसे कैसे करते हैं.
>> सबसे पहले, हम example2.c की एक प्रतिलिपि बनाने के लिए जा रहे हैं.
फिर, अंदर पाश के लिए 1,
हम पाश के लिए एक अतिरिक्त जोड़ने के लिए जा रहे हैं.
तो के लिए (int j = 0, n = strlen (argv [मैं]),
जो फिर हमें वर्तमान तर्क की लंबाई देता है,
, जे.एन. <; j + +)
हम प्रत्येक चरित्र के स्थान मुद्रित करने के लिए जा रहे हैं
printf का उपयोग करके मौजूदा तर्क के अंदर.
तो, printf ("argv [% d], वर्तमान तर्क के सूचकांक का प्रतिनिधित्व करने के लिए,
तब [% d] एक बार फिर से, वर्तमान तर्क के वर्तमान चरित्र का प्रतिनिधित्व करते हैं,
% ग तर्क में वर्तमान चरित्र के लिए है.
अन्त में, हम बाहरी पाश के सूचकांक के साथ printf प्रदान करते हैं, मैं,
तो भीतर पाश के सूचकांक.
>> और हमारे पिछले तर्क printf दिए गए तर्क से वास्तविक चरित्र है
कमांड लाइन पर.
अब, मैं एक स्ट्रिंग की लंबाई प्राप्त करने के लिए स्ट्रिंग strlen समारोह का इस्तेमाल किया है, क्योंकि
मैं भी हमारे भी शामिल है के शीर्ष string.h पुस्तकालय जोड़ना चाहिए.
तो, क्या करना है कि, हम ऊपर जाना है, और बस के नीचे stdio.h, हम क्या करने जा रहे हैं
# शामिल हैं.
>> तो, चलो संकलन और चलाने के लिए और यह एक वास्तविक तर्क प्रदान.
>> और, जैसा कि हम देख सकते हैं, हम अब तर्क में प्रत्येक व्यक्ति चार का सही स्थान है.
तो यह बात है. मैं क्रिस्टोफर Bartholomew हूँ, यह CS50 है.
[CS50.TV]