Showing posts with label input/output in C. Show all posts
Showing posts with label input/output in C. Show all posts

Monday, 25 August 2014

Function of getche function in C language

मागील पोस्ट मध्ये मी getch या फंक्शन बद्दल लिहीले होते. एकसारखीच दिसणारी पण वेगवेगळा स्वभाव असणारी ही फंक्शन्स मी जाणीवपुर्वक एकाच पोस्ट मध्ये न समजावून सांगता अनेक स्वतंत्र पोस्ट मध्ये लिहीन असे सांगीतले होते...
या पोस्ट मध्ये getche या फंक्शनचे उद्योग कसे असतात ते पाहू. दिसायला व वागायला getch या फंक्शनचा जणू जुळा भाऊ. 
हे फंक्शन सुद्धा किबोर्ड कडून एक कॅरेक्टर कि-प्रेस accept करण्याचे काम करते. खरं तर getch फंक्शन हेच काम पार पाडते. पण getch फंक्शन कोणती कि accept करून घेतली हे सांगत नाही तर getche हे फंक्शन युझर कडून कोणती कि प्रेस केली ते सांगते... म्हणून तर getch या फंक्शन नावाच्या शेवटी e जोडून टाकला आहे. 
या e चा अर्थ खरं तर echo असा आहे. Science मध्ये echo चा अर्थ reflection of sound waves असा आहे. पण कंप्युटरवाल्यांनी या शब्दाला सुद्धा import केले. किबोर्डकडून टाइप होणारे कॅरेक्टर स्क्रीन वर प्रिंट करण्याच्या सवयीला सुद्धा echo म्हणतात....!

अनेक browsers वर पासवर्ड भरतांना अथवा जवळपास सगळ्या ATM मशीन वर PIN भरतांना password हा डिसप्ले होतांना ****** अशा स्वरुपात दिसतो... 

आता स्ट्रिंग, लुप, इफ-एल्स, आणी त्यासोबत getch, getche या सारखी फंक्शन्स तुम्हाला कळाली असतील तरच तुम्हाला हा प्रोग्रॅम लिहीता येइल. मी प्रोग्रॅम रन झाल्यानंतर कसा रन होइल त्याची output window या ठिकाणी देत आहे. 


करा हवं तर प्रयत्न प्रोग्रॅम लिहीण्याचा... सोर्स कोड मात्र स्वत: लिहायचा प्रयत्न करा. विनाकारण google करत बसू नका... 

मी नंतर काही काळाने सोर्स कोड टाकते तुमच्या साठी.  

उर्वरीत unformatted functions पुढील पोस्ट मध्ये... 
   

Tuesday, 10 December 2013

scanf function in C language

मागील पोस्ट मध्ये मी printf function बद्दल सांगीतले होते. त्या फंक्शनची जोडीदारीण म्हणजे scanf function. अर्थातच printf function जर output साठी वापरण्यात येत असले तर scanf हे input घेण्यासाठी वापरण्यात येते. जवळपास सर्वच program मध्ये जोडीने फीरतांना तुम्हाला हे आढळतील...!

इंग्रजी मध्ये एखाद्याचे inspection किंवा screening करायचे असेल तर scanning हा शब्द वापरला जातो. मला कधी कधी वाटतं युझरने भरलेली व keyboard च्या आत दडलेली value मेमरीमध्ये चपखलपणे नेउन ठेवण्याचे काम करणारे हे फंक्शन आहे म्हणून scanf असे नाव ठेवले आहे. गंम्मत म्हणजे Java मध्ये अशा प्रकारचे फंक्शन जरी नसले तरी Java मध्ये input घेण्यासाठी object तयार करायला लागतो व त्या object च्या class चे नाव Scanner ठेवले आहे...!

printf function व इतर अनेक फंक्शन्स प्रमाणेच input घेण्याची व्यवस्था सुद्धा डेनीसनं C language मध्ये built in केली नव्हती. त्यामुळे हे फंक्शन सुद्धा compiler च्या library मध्ये उपलब्ध आहे व stdio.h या header file मध्ये त्याचा prototype आहे. तो सर्वसाधारणपणे 

int     _Cdecl scanf(const char *__format, ...);

असा आहे. आता याच फंक्शनचे scanning करायचे म्हणले तर 

scanf function integer return करते. 
printf function प्रमाणेच याचे calling convention _Cdecl आहे. 
याचे पहीले argument स्ट्रिंग असते
पुढील argument सुद्धा printf function प्रमाणे Ellipsis म्हणजेच 3 dots (...) आहे. म्हणूनच मागील पोस्ट मध्ये सांगीतल्या प्रमाणे हे फंक्शन सुद्धा variable number of arguments म्हणजेच any number of arguments घेउ शकते.              

scanf या फंक्शन मध्ये printf function प्रमाणे पहीले argument जरी string असले तरी या स्ट्रिंग मध्ये फॉर्मॅट स्पेसीफायर काही अपवाद वगळता कोणतीही इतर कॅरेक्टर्स लिहून नयेत. त्यामुळे समजा एक इंटीजर input घ्यायचा असेल व x या व्हेअरेबल मध्ये स्टोअर करायचा असेल तर स्टेटमेंट

scanf("%d",&x); 

असे असेल. स्ट्रिंग नंतर जी arguments ची लिस्ट असते त्या मध्ये व्हेअरेबल्सची मेमरी द्यावी लागते. म्हणून व्हेअरेबल च्या नावा समोर ampersand म्हणजेच address operator जोडतात. जर व्हेअरेबल स्वत:च pointer variable असेल तर ampersand जोडण्याची गरज उरत नाही. उदा. 

int x; 
int *ptr = &x;

scanf("%d",ptr); 

असे लिहीले तर keyboard कडून input केलेली value x मध्ये स्टोअर केली जाइल. समजा आपल्याला अनेक integer, real, characters input करून घ्यायच्या आहेत तर तुम्ही 

scanf("%d%f%c",&x,&y,&ch);

असे लिहू शकता. व या format specifiers व्यतीरीक्त इतर कोणतीही characters या string च्या आत लिहू नयेत. अनेक वेळा अनवधानाने escape sequence लिहीण्याची चुक विद्यार्थ्यांच्या कडुन होते व compile अथवा run time error सुद्धा मिळत नाही पण output मात्र चूकीचे मिळते. 

मी एक छोटासा प्रोग्रॅम खाली देते आहे. पहा हवं तर टाइप आणी रन करून...

#include<stdio.h>
void main( )
{
        char line[200];
        printf("Enter Sentence\n");
        scanf("%[^\n]",line);
        printf("%s",line);
}

मी अजून एक गंम्मत सांगते पोस्ट संपवायच्या पुर्वी.... कारण तसं म्हणल ना तर printf आणी scanf वर मला खुप काही सांगायचयं तुम्हाला पण मी एकाच पोस्ट मध्ये नाही लिहीत सगळं... कारण खुप काही आहे...सांगेन मी तुम्हाला

तर printf आणी scanf यांना print function आणी scan function असे म्हणतात हे ठिक आहे पण f हा function साठी राखीव नसून formatted साठी राखीव आहे...!

C is really mysterious language... Life long... 




Do you like the C Marathi e-learning concept?