2010-09-05 11 views
6

हम clrscr() कैसे कार्यान्वित करते हैं? इसे गुगल करने के बाद मैंने पाया कि स्क्रीन को साफ़ करने के लिए \x1b[2j का उपयोग किया जा सकता है लेकिन हम इसका उपयोग कैसे करते हैं? x1b [2j के साथ स्क्रीन को कैसे साफ़ करें?

+5

यह आपके ओएस और पर्यावरण पर सामान्य रूप से निर्भर करता है। –

+0

मुझे आश्चर्य है कि क्या यह प्रश्न बिल्कुल समझ में आता है। या तो आप "फुलस्क्रीन" ऐप बनाते हैं, तो आप स्क्रीन को साफ़ करने के तरीके सहित कर्सर को कैसे व्यवस्थित करें, और भी बहुत कुछ जानते हैं (प्लेटफॉर्म- आदि निर्भर)। या आप एक सीएमडी लाइन उपयोगिता बनाते हैं, जो ठीक दिखता है यदि आप लाइन ब्रेक और शायद बैकस्पेस या सीआरएस का उपयोग करते हैं (उदाहरण के लिए उसी स्थान पर फिर से चलने वाली रेखा गणना के लिए) ... – TheBlastOne

उत्तर

5

मानक सी लाइब्रेरी स्क्रीन को साफ़ करने का एक तरीका प्रदान नहीं करती है। इसके लिए आपको एक ऑपरेटिंग सिस्टम-निर्भर पुस्तकालय की आवश्यकता है।

डॉस और Windows के तहत, एक कार्यक्रम के एक डॉस या Windows कंसोल में चल रहा है, आप कोर सी ओएस के साथ भेज दिया पुस्तकालय में उपलब्ध कराई गई DOS/Windows के एक्सटेंशन का उपयोग कर सकते हैं के लिए:

#include <conio.h> 
clrscr(); 

यूनिक्स सिस्टम के तहत, आप शाप पुस्तकालय का उपयोग कर सकते हैं, जो ओएस के साथ प्रदान किया जाता है। विंडोज़ समेत अधिकांश ऑपरेटिंग सिस्टम के लिए शाप पुस्तकालय के बंदरगाह मौजूद हैं, इसलिए पोर्टेबल कार्यक्रम में जाने का यह तरीका है। -lcurses के साथ अपने कार्यक्रम लिंक और प्रयोग

#include <curses.h> 
erase(); 

कुछ टर्मिनलों और टर्मिनल emulators इस तरह के स्क्रीन को साफ करने के रूप में विशेष कार्य करते हैं, जब वे एक एस्केप अनुक्रम प्राप्त करते हैं। अधिकांश टर्मिनल एएनएसआई मानक का पालन करते हैं जो कई भागने के दृश्यों को परिभाषित करता है; "\x1b[2J" ऐसा अनुक्रम है, और इसका प्रभाव स्क्रीन को साफ़ करना है। राजधानी J पर ध्यान दें। ऐसे टर्मिनल पर, fputs("\x1b[2J", stdout) स्क्रीन साफ़ करता है। वास्तव में यह शब्द टर्मिनल पर erase() पर कॉल करते समय श्राप लाइब्रेरी क्या करता है; शाप पुस्तकालय में टर्मिनल प्रकारों का डेटाबेस और विभिन्न प्रकारों पर उपयोग करने के लिए भागने के अनुक्रम शामिल हैं।

2

आप आश्वस्त हैं, तो यह है कि, नियंत्रण अनुक्रम आप उपयोग करने की आवश्यकता है तो:

#include <stdio.h> 

int main(void) 
{ 
    fputs("\x1b[2j", stdout); 
    return(0); 
} 

यह जान-बूझकर न्यू लाइन को छोड़ देता है - लेकिन आप 'जे' के बाद एक को जोड़ने के साथ बेहतर हो सकता है। हालांकि, Gilles उनके answer में बताए गए हैं, इस समाधान के मुकाबले योग्यता रखने वाले अन्य तरीके हैं।

+0

काम नहीं करता है :(:( –

+0

@fahad: कौन सा मंच क्या आप हैं? यदि आप सादे विरासत डॉस पर हैं, तो आपको एएनएसआई एसवाईएस को काम करने के लिए टर्मिनल से बचने के लिए लोड किया जाना चाहिए। विंडोज के बारे में निश्चित नहीं है। यूनिक्स पर इसे हमेशा काम करना चाहिए जब तक कि आपके पास * मानक * अजीब टर्मिनल न हो कोड –

+0

विंडोज़ मेरा प्लेटफ़ॉर्म –

0

विंडोज पर आप

#include <tchar.h> 
#include <stdio.h> 
#include <windows.h> 

void clrscr(void) 
{ 
HANDLE std_out = GetStdHandle(STD_OUTPUT_HANDLE); 
CONSOLE_SCREEN_BUFFER_INFO cbi; 
COORD origin = {0,0}; 
int buf_length; 

GetConsoleScreenBufferInfo(std_out,&cbi); 
buf_length = cbi.dwSize.X*cbi.dwSize.Y; 
FillConsoleOutputCharacter(std_out,0x20,buf_length,origin,0); 
FillConsoleOutputAttribute(std_out,0x07,buf_length,origin,0); 
} 

int _tmain(int argc, wchar_t *argv[], wchar_t *envp[]) 
{ 
DWORD i; 
_tprintf(TEXT("Clear screen probe...\n")); 
clrscr(); 

return 0; 
} 

"\ x1B [एच \ x1B [2J" पर OSX काम करता है की कोशिश कर सकते हैं।

संबंधित मुद्दे