What is scanf Function in C Language: Computer से जितने भी Devices Connected होते हैं, उन सभी Devices की अपनी स्वयं की Memory होती है, जिसे Temporary Buffer कहा जाता है। Keyboard, Monitor, Mouse, Printer आदि सबका अपना Temporary Buffer होता है। हम Keyboard से जब भी किसी Key को Press करते हैं, तो उस Key की Information Directly Computer की RAM में जा कर Store नहीं होती है, बल्कि उस Key की Information सबसे पहले Keyboard के Memory Buffer में Store होती है, जहां से हमारे Computer का CPU उस Key की Information को Computer के RAM में Store करता है।
ठीक इसी तरह से जब हम हमारे Computer के Monitor पर किसी Message को Print करना चाहते हैं, तो वास्तव में हम Message को Print करने के लिए Computer के Monitor नहीं भेज रहे होते हैं, बल्कि हम उस Printable Message को Computer के Graphics Buffer में भेज रहे होते हैं, जहां से हमारा Monitor Printable Message की Information को प्राप्त करके Monitor पर Display कर देता है।
जब हम printf() Function को Use करके किसी Message को Monitor पर Display करना चाहते हैं, तब हम उस Message या Data को printf() Function में एक String Argument के रूप में भेज देते हैं। printf() Function उस String Message को Computer की Memory से प्राप्त करके Monitor के Graphics Buffer में Store देता है और इस Graphics Buffer में Stored Data को हमारा Monitor अपने Screen पर Display कर देता है।
इसी तरह से जब हम Keyboard से किसी Input को प्राप्त करना चाहते हैं, scanf() Function Keyboard पर Press की गई Keys की Information को Keyboard के Buffer से प्राप्त करता है और उन Keys की Information को scanf() Function में Specify किए गए Variable Identifier की Storage Location पर Store कर देता है।
दूसरे शब्दों में कहें तो जब हम Memory में Stored किसी Data को Monitor पर Display करना चाहते हैं, तब printf() Function में विभिन्न Identifiers को Specify करके हम हमारे Computer को ये बताते हैं कि हमें Memory की किस Location पर Stored Data को Screen पर Display करना है और विभिन्न प्रकार के Control Strings का प्रयोग करके हम हमारे Computer को ये बताते हैं कि विभिन्न Identifiers द्वारा Specify किए जा रहे Data को Monitor के Screen की किस Location पर व किस Format में Display करना है।
इसी तरह से जब हम Keyboard से किसी Data को Input के रूप में प्राप्त करके किसी Memory Location पर Store करना चाहते हैं, तब जिस Data Type के Data को Keyboard से Receive करना चाहते हैं, उस Data Type के Control String को scanf() Function में Specify करते हैं और Keyboard से आने वाले Data को Memory के जिस Storage Location पर Store करना चाहते हैं,scanf() function में उस Storage Location के Variable Identifier का नाम Address Operator ( & ) के साथ Specify करते हैं।
जिस तरह printf() Function से साथ हम विभिन्न प्रकार के Control Strings का प्रयोग करके विभिन्न प्रकार के Identifiers के मानों को Output में Print करते हैं, उसी तरह से विभिन्न प्रकार के Data Type के मानों को Keyboard Buffer से प्राप्त करके विभिन्न प्रकार के Identifiers में Store करने के लिए भी हम विभिन्न प्रकार के Control Strings का प्रयोग कर सकते हैं। printf() Function के साथ जो Control String जिस Data Type से Related होता है, scanf() Function में भी वह Control String उसी Data Type से Associated होता है। scanf() Function के साथ Use किए जा सकने वाले Control Strings निम्नानुसार हैं:
%d | Keyboard से Integer Data Type के मान को प्राप्त करने के लिए | |
%c | Keyboard से Character Data Type के मान को प्राप्त करने के लिए | |
%f | Keyboard से Floating Point Real Data Type के मान को प्राप्त करने के लिए | |
%g | Keyboard से Floating Point Real Data Type के मान को प्राप्त करने के लिए | |
%e | Keyboard से Floating Point Real Data Type के मान को प्राप्त करने के लिए | |
%i | Keyboard से Signed Decimal Integer Data Type के मान को प्राप्त करने के लिए | |
%u | Keyboard से Unsigned Decimal Integer Data Type के मान को प्राप्त करने के लिए | |
%o | Keyboard से Octal Integer Data Type के मान को प्राप्त करने के लिए | |
%s | Keyboard से String को प्राप्त करने के लिए | |
%x | Keyboard से Hexadecimal Data Type के मान को प्राप्त करने के लिए | |
%[…] | Keyboard से String को प्राप्त करने के लिए |
scanf() Function printf() function की तुलना में एक अधिक Control String को Support करता है। scanf() function का Syntax निम्नानुसार होता हैः
Syntax:
scanf(“cntrlStr1 cntrlStr2 cntrlStrN”, &Identifier1, &Identifier2, &IdentifierN)
इस Syntax में cntrlStr ये तय करती हैं कि Keyboard से किसी Data Type का Data scanf() function Receive करेगा, जबकि Identifier उस Memory Location को Represent करता है, जहां पर Keyboard से आने वाले Data को Store करना है। इस Function में भी Control Strings जिस क्रम में Specify किए जाते हैं, उसी क्रम में आने वाले Data भी Memory में Store होते हैं।
उदाहरण के लिए cntrlStr1 Identifier1 से, cntrlStr2 Identifier2 से व cntrlStrN IdentifierN से Associated है, इसलिए Keyboard से आने वाला cntrlStr1 Type का सबसे पहला मान Identifier1 की Storage Location पर Store होगा, दूसरे Number पर आने वाला cntrlStr2 Type का मान Identifier2 के Memory Location पर Store होगा और सबसे बाद में आने वाला cntrlStrN Type का मान IdentifierN नाम के Identifier द्वारा Represent होने वाली Memory Location पर Store होगा।
& Operator को Address Operator कहा जाता है। ये एक Unary Operator है। ये Operator हमेंशा उस Identifier के Memory Location का Address Return करता है, जिसके साथ इसे Use किया जाता है। जब हम Program के Run Time के Keyboard से किसी Data को Receive करके उस पर Processing करना चाहते हैं, तब scanf() Function द्वारा Computer को हमें दो बातें बतानी पडती हैं:
पहली ये कि हम Keyboard से किस प्रकार के Data को Read करना चाहते हैं। Keyboard से Read किए जाने वाले Data के Data Type को Specify करने के लिए उपयुक्त Control String का प्रयोग किया जाता है। Computer को दूसरी बात ये बतानी होती है, कि Keyboard से आने वाला Data Memory की किस Location पर Store होगा। यानी दूसरी बात के रूप में हमें Computer को उस Memory Location का Address बताना होता है, जहां पर हम Keyboard से आने वाले Data को Store करना चाहते हैं।
जैसाकि हमने पहले भी कहा कि & Operator किसी भी Identifier (Variable or Constant) का Address Return करने का काम करता है, इसलिए हमें जिस Identifier की Memory Location पर Keyboard से आने वाले Data को Store करना होता है, उस Identifier के नाम के पहले हम & Operator का प्रयोग उस Identifier को scanf() Function में Specify कर देते हैं।
चूंकि scanf() Function का प्रयोग Keyboard से Input प्राप्त करने के लिए किया जाता है, इसलिए इस Function का प्रयोग करने से पहले हमें उस Data Type का एक Variable Identifier Create करना जरूरी होता है, जिसमें हमें scanf() Function द्वारा Keyboard से आने वाले Data को Store करना चाहते हैं। बिना Variable Create किए हुए, हम scanf() Function का प्रयोग नहीं कर सकते हैं, क्योंकि इस Function में हमें उस Identifier का नाम Address Operator के साथ Specify करना पडता है, जिसकी Memory location पर हम Keyboard से आने वाले मान को Store करना चाहते हैं। यदि हम बिना Variable Create किए हुए scanf() Function को Use करते हैं, तो C का Compiler Compile Time Error Generate करके हमें ऐसा करने से रोक देता है।
चलिए, एक उदाहरण द्वारा scanf() Function को Use करना सीखते हैं। मानलो कि हम Keyboard से किसी Student की Age को Read करना चाहते हैं और उस Age में 10 जोडकर Resultant मान को Screen पर Display करना चाहते हैं। इस समस्या का Algorithm निम्नानुसार बनाया जा सकता हैः
Algorithm :
SIMPLE_INPUT(AGE, RESULT)
Where:
AGE is the age of student and
RESULT is the modified age of the student
- START [Start the program.]
- READ AGE [Get AGE from keyboard.]
- PROCESS RESULT = AGE + 10
- PRINT RESULT
- END [End the program.]
इसी Algorithm के आधार पर हम “C” भाषा में Program भी बना सकते हैं, जिसमें सबसे पहले हमें ये तय करना है कि हमें किस प्रकार का Data Computer की Memory में Process करने के लिए Store करना है। चूंकि Age एक Unsigned Type का मान होता है, जो कि कभी भी Minus में या Negative Type में नहीं हो सकता है, साथ ही Age एक ऐसा मान होता है, जो बहुत ही छोटा होता है, क्योंकि किसी भी व्यक्ति की Normal Age 100-150 साल से ज्यादा नहीं हो सकती है, इसलिए हम Age को Store करने के लिए Unsigned Character Type का Variable Identifier Create कर सकते हैं, क्योंकि इस Data Type के Identifier की Range 0 से 255 तक होती है, जिसमें किसी की भी Age आसानी से Store हो सकती है। अब यदि हम इस समस्या का “C” Program बनाना चाहें, तो ये Program निम्नानुसार होगाः
#include <stdio.h> #include <conio.h> main() { /* Declaration Section */ unsigned char age, result; clrscr(); /* Input Section */ printf(“Enter Age of the student : “); scanf(“%u”, &age); /* Process Section */ result = age + 10; /* Output Section */ printf(“After 10 year, student will be %u years old”, result); getch(); }
हमें एक “C” Program में जितने भी Identifiers को Use करना होता है, उन सभी Identifiers को Declaration Section में ही Declare करना जरूरी होता है। चूंकि हम हमारे इस Program में Keyboard से Input लेना चाहते हैं, इसलिए User को एक Message देकर ये बताना जरूरी होता है, कि Program को काम करने के लिए किस प्रकार के मान की जरूरत है।
इसीलिए Input Section में scanf() Function को Use करने से पहले हमने एक printf() Statement को Use करके User को Student की Age Input करने का Message दिया है। जब हम इस Program को Compile करके Run करते हैं, तो Program के Run होते ही User को निम्नानुसार ये Message दिखाई देता है और Data प्राप्त करने के लिए Cursor Blink करने लगता हैः
Enter Age of the student : _
यदि printf() Statement द्वारा ये Message Print ना करें, तो Output में Black Screen पर केवल Cursor Blink करता हुआ ही दिखाई देता है और User को पता ही नहीं लगता कि उसे करना क्या है। जहां पर Cursor Blink कर रहा है, वहां पर User जो भी मान Input करता है, उस मान को scanf() Function Scan करता है।
मानलो User ने इस स्थान पर 15 Input किया, तो scanf() function इस 15 को Scan करेगा और इस मान को उस age नाम के Variable के Memory Location पर भेज देगा, जिसका नाम & Address Operator के साथ scanf() Function में Specify किया गया है। scanf() Function जैसे ही Keyboard से आने वाले मान को Computer की उस Memory Location पर Store करता है, जिसका नाम age है, वैसे ही Input का काम समाप्त हो जाता है। उसके बाद Computer Program के अगले Statement को Execute करके Age में 10 जोडता है और इसके बाद के printf() Statement द्वारा Resultant मान को Screen पर निम्नानुसार Form में Print कर दिया जाता हैः
After 10 year, student will be 25 years old
जब ये Program पूरी तरह से Run हो जाता है, तब इसका Output हमें निम्नानुसार प्राप्त होता हैः
Enter Age of the student : 15
After 10 year, student will be 25 years old
इस प्रकार से हम scanf() Function का प्रयोग Current Program में User से किसी Specific Type का Data Accept करने के लिए करते हैं, जिस पर Processing करके जरूरत के अनुसार Processed Result Generate किया जाता है।
हालांकि यहां पर हमने एक बहुत ही साधारण उदाहरण द्वारा scanf() Function को उपयोग में लेने के बारे मे जाना जबकि अलग-अलग Programs में अलग-अलग प्रकार के Data को Accept करने के लिए scanf() Function को कई तरीकों से उपयोग में लिया जाता है। इसलिए scanf() Function को अलग-अलग प्रकार की जरूरतों को पूरा करने के लिए जिन-जिन तरीकों को Use किया जा सकता है, उन सभी तरीकों के बारे में विस्तारा से जाने बिना हम scanf() Function को इसकी पूरी क्षमता के साथ उपयोग में नहीं ले सकते। साथ ही ये Function केवल C Language में ही नहीं बल्कि C++ व PHP जैसी Scripting Language में भी इसी तरह से उपयोग में लिया जाता है। जबकि Internet पर उपलब्ध 60% से ज्यादा Websites व Web Applications, PHP आधारित हैं।
इसलिए यदि आप PHP आधारित Websites या Web Applications Develop करना चाहते हैं, तब भी printf() व scanf() Functions के बारे में अच्छी तरह से जानना व विभिन्न तरीकों से उपयोग में लेना सीखकना काफी उपयोगी व जरूरी होता है और इस जरूरत को पूरा करने के लिए आप C Programming Language in Hindi पुस्तक पढ सकते हैं, जिसमें printf(), scanf(), getc(), getch(), getche(), getchar(), putc(), putch(), putchar() जैसे बहुत सारे Input/Output Functions को विभिन्न प्रकार के उपयोगी Example Programs द्वारा Detail से Discuss किया गया है। (What is scanf Function in C Language)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C Programming Language in Hindi | Page: 477 + 265 | Format: PDF