के साथ टर्मिनल कर्सर को चालू करने के लिए टर्मिनल कर्सर को लौटाना मैं एक फ़िल्टर (एक टर्मिनल आउटपुट के लिए निर्धारित पाइप में) लिख रहा हूं जिसे कभी-कभी एक पंक्ति को "ओवरराइट" करने की आवश्यकता होती है। यह \n
तक पहुंचने तक विशेष व्यवहार का आह्वान करते हुए, चरित्र-दर-चरित्र को stdout करने के लिए stdin पास करके काम करता है। मेरी समस्या यह बताती है कि लाइन की शुरुआत में कैसे वापसी करें।रैपिंग सक्षम
पहली बात मैंने सोचा था कि \r
या एएनएसआई अनुक्रम \033[1G
का उपयोग कर रहा था। हालांकि, अगर लाइन टर्मिनल पर लपेटने के लिए काफी लंबा था (और इसलिए इसे स्क्रॉल करने के कारण), तो यह केवल कर्सर को वर्तमान भौतिक लाइन पर ले जायेगा।
मेरा दूसरा विचार लाइन की लंबाई (पिछले \n
के बाद से पारित वर्णों की संख्या) को ट्रैक करना था, और फिर कई बार \b
गूंजना था। हालांकि, यह गलत हो जाता है यदि रेखा में नियंत्रण वर्ण या भागने के अनुक्रम होते हैं (और संभवतः यूनिकोड?)।
सभी विशेष अनुक्रमों की खोज करने और मेरे चरित्र गणना को समायोजित करने के लिए इसका उपयोग करने से कम, क्या यह हासिल करने का एक आसान तरीका है?
सुझाव के लिए धन्यवाद! दुर्भाग्यवश कुछ कारण हैं कि मुझे नहीं लगता कि यह मेरे लिए काम करेगा: * मुझे अभी भी पता लगाना होगा कि किनारे के करीब मैं हूं * मैं आखिरी बात नहीं कर सकता पाइपलाइन संदर्भ के लिए; मेरा फ़िल्टर पैटर्न से मेल खाने वाला है, और रंगीन भागने के दृश्यों से घिरे मिलान करने वाले तारों को "पुनः लिखना" है। मैं 'fgets() 'का उपयोग नहीं कर सकता और एक समय में पूरे तारों पर काम नहीं कर सकता, क्योंकि मेरा कुछ इनपुट" गतिशील "आउटपुट (उदाहरण के लिए एक बढ़ती प्रगति स्थिति) उत्पन्न करेगा जो थोड़ी देर के लिए \ n' आउटपुट नहीं करता है। –