बताएं यह कोड के & आर से आता है। मैंने इसे कई बार पढ़ा है, लेकिन यह अभी भी मेरी समझ से बचने लगता है।कृपया इस उदाहरण सी कोड
#define BUFSIZE 100
char buf[BUFSIZE];
int bufp = 0;
int getch(void)
{
return(bufp>0)?buf[--bufp]:getchar();
}
int ungetch(int c)
{
if(bufp>=BUFSIZE)
printf("too many characters");
else buf[bufp++]=c;
}
इन दोनों कार्यों के प्रयोजन है, तो कश्मीर & आर कहते हैं, बहुत ज्यादा इनपुट पढ़ने से एक कार्यक्रम को रोकने के लिए है। यानी इस कोड के बिना एक फ़ंक्शन यह निर्धारित करने में सक्षम नहीं हो सकता है कि इसे पहले पढ़ने के बिना पर्याप्त डेटा पढ़ा गया है। लेकिन मुझे समझ में नहीं आता कि यह कैसे काम करता है।
उदाहरण के लिए, getch() पर विचार करें। जहाँ तक मुझे इस रूप में देख सकते हैं चरणों का यह लेता है: bufp 0.
- जांच कर लें कि यदि ऐसा है तो फिर से buf चार मान [- bufp]।
- अन्य getchar() वापस लौटें।
मैं एक और विशिष्ट सवाल पूछना चाहता हूं, लेकिन मुझे सचमुच यह नहीं पता कि यह कोड प्राप्त करने के लिए क्या उद्देश्य प्राप्त करता है, इसलिए मेरा प्रश्न है: (ए) उद्देश्य और (बी) तर्क क्या है इस कोड का?
अग्रिम धन्यवाद।
नोट: किसी भी कश्मीर & आर प्रशंसकों के लिए, इस कोड पेज 79 पर पाया जा सकता (आपके संस्करण के आधार पर, मुझे लगता है)
'ungetch' के अंदर परीक्षण में शायद इसकी स्थिति में 'bufp'' printf' शामिल नहीं होना चाहिए। मुझे लगता है कि यह एक टाइपो है। –
मेरे पास हाथ में के एंड आर नहीं है, लेकिन मुझे लगता है कि अगर अनजान में, अगर शर्त 'bufp> = BUFSIZE' – kol
होनी चाहिए, शायद मेरी गलती। सोमेन ने इसे अभी तय कर दिया है, इसलिए मुझे याद नहीं आया कि मैंने जो मूल रूप से टाइप किया है। –