Wednesday 4 December 2013

printf function in C

C language मध्ये printf म्हणजेच print function ची ओळख पहील्याच दिवशी होते. डेनीस रिची ला C language हि compact form मध्येच हवी होती. म्हणून जाणीवपुर्वक त्याने input/output ची सोय language च्या definition मध्ये केलेली नाही. अर्थात printf हे फंक्शन C language चा inherent part आहे अशी अनेक जणांची सुरवातीला समजूत होते हा भाग वेगळा. 




printf function हे formatted console I/O functions या category मध्ये येते. प्रथम मी या category चा अर्थ काय आहे ते सांगते. 


  1. Console : या शब्दाचे अनेक अर्थ आहेत. English मध्ये त्याचा अर्थ सांत्वंन करणे असा आहे. तर Computer मध्ये keyboard व monitor चे combination, display monitor, command line interface, computer terminal असे अनेक आहेत. C language च्या मर्यादीत अर्थ पहायचा असेल तर शक्यतो असे application ज्या वर फक्त text based output अशी स्क्रिन. यालाच console असे शक्यतो ओळखले जाते. व printf function कॉल करून प्रिंट केलेले output console ला म्हणजेच monitor ला पाठवले जाते
  2. Formatted: Console Screen वर output नेमक्या ठिकाणी हवे असेल, दोन शब्दांमध्ये अथवा दोन वाक्यांमध्ये ठरावीक अतंर ठेवायचे असेल, किंवा real number print करतांना decimal point नंतर ठरावीक digits हवे असतील अशा प्रकारचे किंवा तत्सम प्रकारचे formatted output हवे असेल तर ते printf function च्या सहाय्याने करता येते. 
  3. I/O : Input व Output या जोडगोळीचे ते संक्षीप्त स्वरूप आहे. 


हे फंक्शन Compiler च्या library मध्ये उपलब्ध असते व त्याचा प्रोटोटाइप stdio.h या header file मध्ये असतो. तो साधारणपणे 


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


असा आहे. या prototype वरून कोणती माहीती मिळते...? तर


  • printf function चा return type integer आहे
  • _Cdecl ला printf function चे calling convention म्हणतात. 
  • printf function पहीले argument string घेते
  • printf function चे दुसऱ्या argument मध्ये तीन dots दाखवले आहेत ज्याला ellipsis असे म्हणतात ज्याचा अर्थ variable number of arguments असा आहे. म्हणजेच printf function एक पेक्षा जास्त कितीही arguments घेते.

हे फंक्शन 


  • series of arguments घेते
  • जर पहील्या स्ट्रिंग मध्ये काही format specifiers असतील तर त्या प्रमाणे apply करते
  • आणी formatted data console वर print करते

printf function ची वैशिष्ठे


  • By default printf function print करतांना right hand side ला word wrap facility वापरते
  • \n हे special implementation control character आहे ज्या मध्ये control next line ला नेण्याचे काम करते
  • Screen scroll down करण्याची सुविधा सुद्धा printf function मध्ये built in आहे
  • character print केल्या नंतर cursor next position ला नेण्याचे काम सुद्धा automatically नेण्याची provision आहे
  • पहील्या format specifier ला format नंतरचे पहीले argument connect करण्याचे, दुसऱ्या format specifier ला format नंतरचे दुसरे argument connect करण्याचे व त्याच पद्धतीने पुढील format specifier apply करण्याची built in सुविधा printf function मध्ये आहे


format specifier चा typical form 

% [flags] [width] [.prec] [{h|l}] type

असा आहे. 

या मध्ये अनेक प्रकारचे flags व type आहेत. पण महत्वाचे व नेहमी लागणारे मी येथे घेते. बाकीचे स्पेशल पुढील पोस्ट मध्ये. 

int x = 55;
printf("x = %o",x); 

असे असेल तर o हा एखादा integer number जर octal format मध्ये print करायचा असेल तर वापरतात. या ठिकाणी तुम्हाला output मात्र 

x = 67 

असे येइल. पण तुम्हाला true octal representation हवे असेल तर मात्र printf function 

printf("x = %#o",x);

असे लिहावे लागेल, या ठिकाणी # हा flag आहे . 

समजा तुम्हाला x = 55 या स्टेटमेंट नंतर value print करतांना मात्र +55 अशी हवी असेल तर + flag वापरावा लागेल जसे की 

printf("x = %+d",x); 

समजा आपल्याला 55 च्या अलीकडे 4 zero हवे आहेत. तर 0 असा flag टाकावा लागेल. जसे की

printf("x = %06d",x); 

असे स्टेटमेंट लिहीले तर output 000055 असे मिळेल. 

print होतांना तुम्हाला width specify करायची असेल तर ती सुद्धा देउ शकता. जसे की 

printf("x = %d",x); असे लिहीले तर output 

x = 55 

असे मिळेल. पण समजा

printf("x = 10d",x);

असे लिहीले तर 10 columns जागा राखीव ठेवून मग त्या ठिकाणापासून डाव्या बाजूला printing होइल जसे कि

x =           55

असे होइल. 

समजा 

float y = 6.7;

असे स्टेटमेंट असेल तर 

printf("y = %f",y); 

हे स्टेट्मेंट printing करतांना 

y = 6.700000 

असे करेल. पण जर 

printf("%0.2f",y);

असे लिहीले तर मात्र output

y = 6.70 

असे मिळेल.   
  
C language मध्ये असलेल्या वेगवेगळ्या format specifiers ची माहीती मी या पुर्वीच Blog वर टाकली आहेत


  
   

   

No comments:

Post a Comment

Do you like the C Marathi e-learning concept?