कॉलेज के लिए असाइनमेंट में इसे अभ्यास में C readline
फ़ंक्शन का उपयोग करने का सुझाव दिया गया था। मैंने इसके संदर्भ की खोज की है लेकिन अभी भी इसे नहीं मिला है। क्या यह वास्तव में मौजूद है? किस हेडर में? क्या आप संदर्भ में लिंक पोस्ट कर सकते हैं?सी रीडलाइन फ़ंक्शन
उत्तर
ReadLine दो स्थानों, libreadline
और libedit
(भी libeditline
कहा जाता है) में मौजूद है। दोनों में एक समान इंटरफ़ेस है। अंतर यह है कि libreadline जीपीएल के तहत लाइसेंस प्राप्त है, libedit 3 खंड बीएसडी है। लाइसेंसिंग वास्तव में असाइनमेंट की चिंता नहीं है, कम से कम मुझे नहीं लगता कि यह है। या तो लाइसेंस आपको कोड को स्वतंत्र रूप से उपयोग करने की अनुमति देता है। यदि आप रीडलाइन के खिलाफ लिंक करते हैं, तो पूरे कार्यक्रम को GPL 2 or later
बनाना सुनिश्चित करें जो जीपीएल के किसी भी संस्करण को सिस्टम readline
पर नियंत्रित करेगा। यह सिस्टम की उम्र के आधार पर जीपीएल 2 + या जीपीएल 3 + हो सकता है। मैं या तो लाइसेंस की वकालत नहीं कर रहा हूं, यह आपके ऊपर है।
ध्यान दें, स्थापित या तो/या करने के लिए ध्यान रखना है और आवश्यकतानुसार (-lreadline
या-ledit
या-leditline
) जोड़ने समायोजित करें। दोनों पुस्तकालय हैं और मानक सी पुस्तकालय का हिस्सा नहीं हैं।
संपादित (बाद का विचार):
तो जंगली के लिए एक कार्यक्रम जारी है, इसकी एक अच्छा इशारा उपयोगकर्ता पसंद के उनके readline
के साथ इसे कॉन्फ़िगर करने की अनुमति। उदाहरण के लिए: --with-readline
या --with-libedit
, आदि। यह एक बाइनरी पैकेज की अनुमति देता है जो लाइसेंस की अपनी पसंद के अनुरूप है, कम से कम readline
संबंधित है।
लिंक: Readline और Edit/Editline।
यह अस्तित्व में नहीं है।
वे गलत थे और stdio.h से() को संदर्भित किया गया था।
यह पैरामीटर पढ़ने के लिए अधिकतम आकार के कारण भी एक बहुत ही असुरक्षित कार्य है, जिससे इसे तत्काल सुरक्षा पूरी हो जाती है (लुकअप बफर ओवररन हमला)। आप इसके बजाय fgets() का उपयोग कर सकते हैं, जैसे नीचे दी गई गुस्से में टिप्पणियां।
नहीं, ** ** ** 'प्राप्त 'का उपयोग न करें! –
@ जेरी +1 ... क्या आप fgets का उपयोग करने की सलाह देते हैं? – LB40
जैरी अप को वापस करने के लिए: 'get' आपको पढ़ने के लिए वर्णों की संख्या पर एक सीमा निर्दिष्ट नहीं करने देता है। यह बुरा है, क्योंकि आप एक वर्ण सरणी में पढ़ रहे हैं, जिसमें एक निश्चित लंबाई है। यदि आप सरणी की लंबाई से अधिक लंबा पाठ पढ़ते हैं, तो आपको एक बफर ओवरफ़्लो मिलता है, जिसके परिणामस्वरूप आपका प्रोग्राम क्रैश हो रहा है या स्मृति हो सकती है जिसे ओवरराइट होने पर स्पर्श नहीं किया जाना चाहिए। –
मुझे नहीं लगता कि यह एक मानक कार्य है।
मैं सरल कार्यान्वयन इस तरह होगा:
char *Readline(char *in) { char *cptr; if (cptr = fgets(in, MAX_LINE, stdin)) { /* kill preceding whitespace but leave \n so we're guaranteed to have something while(*cptr == ' ' || *cptr == '\t') { cptr++; } return cptr; } else { return 0; } }
यह fgets() का उपयोग करता है MAX_LINE अप करने के लिए पढ़ने के लिए - 'में' बफर में 1 अक्षर। यह व्हाइटस्पेस से पहले स्ट्रिप्स करता है और पहले गैर-व्हाइटस्पेस चरित्र में पॉइंटर देता है।
रीडलाइन() एक कमांड इतिहास, टैब पूर्णता, सरल रेखा संपादन, आदि प्रदान करता है। यह एक बाहरी लेकिन जंगली लोकप्रिय पुस्तकालय है। –
@Tim: आप सही हैं, रीडलाइन लाइब्रेरी ऐसा करता है, लेकिन मुझे लगता है कि वह केवल एक सीआर चार सरणी के रूप में एक रेखा को पढ़ने के लिए चाहता है। – yassin
मुझे लगता है कि वह पुस्तकालयों के लिंक चाहता था। –
- 1. 'रीडलाइन'
- 2. रीडलाइन पर जाएं -> स्ट्रिंग
- 3. क्या रीडलाइन को आर
- 4. रंगीन आउटपुट रीडलाइन
- 5. DataInputStream ने रीडलाइन() विधि
- 6. क्लोजर आरईपीएल रीडलाइन समर्थन
- 7. जावा BufferedReader रीडलाइन अवरुद्ध?
- 8. सी # फ़ाइल को कैसे परिवर्तित करें। रीडलाइन में स्ट्रिंग सरणी?
- 9. रेल 3 और रीडलाइन समस्या
- 10. रीडलाइन() को पूरा करने के लिए
- 11. सी ++ फ़ंक्शन
- 12. सी - फ़ंक्शन
- 13. सी # फ़ंक्शन
- 14. सी फ़ंक्शन
- 15. सी ++ फ़ंक्शन
- 16. सी ++ फ़ंक्शन
- 17. फ़ाइल करता है। रीडलाइन मुक्त संसाधन
- 18. सी ++ कॉलबैक से सी # फ़ंक्शन
- 19. फ़ाइल। रीडलाइन इसे लॉक किए बिना?
- 20. पर्ल टर्म :: रीडलाइन :: जीएनयू सिग्नल हैंडलिंग कठिनाइयों
- 21. जावा, सॉकेट, बुफर्ड रीडर, और रीडलाइन हैंग ... :(
- 22. सी एपीआई फ़ंक्शन कॉलबैक सी ++ सदस्य फ़ंक्शन कोड
- 23. सी ++ स्थैतिक स्थानीय फ़ंक्शन बनाम वैश्विक फ़ंक्शन
- 24. सी ++ वर्चुअल फ़ंक्शन कार्यान्वयन?
- 25. सी फ़ंक्शन जो फ़ाइल
- 26. सी प्रोग्राम फ़ंक्शन
- 27. सी प्रोटोटाइप फ़ंक्शन
- 28. सी # जेनरिक फ़ंक्शन
- 29. सी फ़ंक्शन घोषणा
- 30. सी ++ टेम्पलेट फ़ंक्शन पैरामीटर
जिसका अर्थ है, आप 'libedit' कारण बीएसडी नियम चाहते हैं। : पी – Earlz
हां, मैंने 'libedit' अवतार को कुछ सिस्टमों से अधिक' libeditline' के रूप में देखा है, हालांकि मुझे याद नहीं है कि वे इस समय क्या थे। –
यह भी ध्यान दें, मैंने लाइसेंस से लिंक नहीं किया है। आपके द्वारा उपयोग किए जाने वाले संस्करण के आधार पर रीडलाइन जीपीएल 2-या-बाद में या जीपीएल 3 हो सकती है, हालांकि 3 खंड बीएसडी लाइसेंस स्थिर रहता है। –