Thursday 12 December 2013

sprintf functions in C

printfscanf हि फंक्शंन्स तुम्हाला माहीतच झाली आहेत. मागील पोस्ट मध्ये त्या दोनही फंक्शंन्स विषयी मी थोडे-फार लिहीले होते. पण सर्वच काही जाणीवपुर्वक लिहीले नाही. कारण त्या फंक्शंन्स शी निगडीत अनेक concepts असे आहेत की एकाच पोस्ट मध्ये लिहीले तर वाचायचा कंटाळा करून तुमचे दुर्लक्ष होउ शकते. 

printf व scanf या दोन फंक्शंन्सशी निगडीत अजून दोन फंक्शंन्स मी आज घेते आहे ती म्हणजे sprintf आणी sscanf. अनेकवेळा ती कशी व कधी वापरायची हे न कळाल्यामुळे शिकायची सुद्धा राहून जातात. 

Buffering Video


एकदम सोप्या भाषेत सांगायचे झाले तर printf function ज्यावेळी call करतो त्यावेळी त्याचे output आपल्याला monitor वर दिसते. पण हेच जर आपल्याला monitor वर न पाठवता एकाद्या व्हेअरेबल मध्ये स्टोअर करायचे असेल तर sprintf हे फंक्शन तुम्हाला मदत करेल. आता printf function call करतांना त्याचे पहीले argument string constant असते व त्यामधील formatted contents हे monitor वर पाठवले जात असतील तर हेच contents store करायला लागणाऱ्या व्हेअरेबल चा data type अर्थातच string असायला हवा. त्यामुळे sprintf function चा प्रोटोटाइप सुद्धा 

int sprintf ( char * buffer, const char * format [ , argument , ...] );

असा आहे. या ठिकाणी पहीले argument buffer हा character pointer म्हणजेच string आहे हे लक्षात घ्या. उर्वरीत arguments हि printf function प्रमाणे same आहेत. फरक इतकाच की output हे monitor ला पाठवायच्या ऐवजी buffer point करत असलेल्या string मध्ये स्टोअर करण्याची विनंती आपण sprintf function ला करत आहोत. त्यामुळे प्रोग्रॅम मध्ये buffer साठी एक sufficient size असलेला एक character array declare करून ठेवण्याची गरज असते. जसे की 

char buffermem[100];

व हाच base address तुम्ही sprintf function ला first argument म्हणून पाठवायचा म्हणजे काम भागले...!

समजा आपण एक छोटा प्रोग्रॅम लिहायचा प्रयत्न केला तर कसा असेल...?


व output 

              
असे असेल....

File handling करतांना अशा प्रकारच्या फंक्शंन्स चा उपयोग करता येउ शकतो. किंवा एखादे output आपल्याला नंतर वापरायचे असेल तर sprintf function चा वापर केला जातो. 

printf function ज्या प्रमाणे monitor वर किती characters print केली त्याचा integer number return करते त्याच प्रमाणे sprintf function सुद्धा किती characters array मध्ये टाकली ते return करते. अर्थात त्या मध्ये string terminating character घेत नाही हे लक्षात घ्या...!

एखादा youtube वरचा व्हिडीओ आपण direct न पहाता pause करून buffer memory मध्ये साठवून ठेवतो व नंतर internet connection नसतांना सुद्धा पाहतो तसलाच काहीतरी हा प्रकार आहे असे मला अनेक वेळा वाटते...!

पुढच्या पोस्ट मध्ये मी sscanf बद्द्ल लिहीते...

Till then Happy Coding...!    

No comments:

Post a Comment

Do you like the C Marathi e-learning concept?