2009-05-30 15 views
13

मैंने इस फ़ंक्शन के लिए हर जगह देखा है और यह काम करने के लिए हेडर फाइल नहीं ढूंढ सकता है। यह कहता है कि clrscr() अविकसित है जो मुझे प्रश्न में लाता है। Clrscr() है; सी ++ में एक समारोह?clrscr() है; सी ++ में एक समारोह?

+0

मेरी सी शिक्षकों में से एक (जो आधिकारिक तौर पर एक सी ++ शिक्षक) हमें WinPI कॉल का उपयोग करके लागू की गई एक विधि को परिभाषित करने वाली सी हेडर फ़ाइल देने के लिए उपयोग किया जाता था। उन्होंने यह समझाने में समय नहीं लगाया कि यह किसी भी मानक पुस्तकालय का हिस्सा नहीं था, इस प्रकार वह हमेशा उन छात्रों से प्रश्न पूछता था जो घर पर अपने उदाहरण संकलित नहीं कर सके। वह का प्रशंसक भी था। अहह यादें ... – Trillian

+0

क्या आपने कभी इसे मेरे आदमी को समझ लिया था? :) – NTDLS

उत्तर

32

यह पुराने बोर्लैंड सी कंपाइलर्स में < conio.h> में एक फ़ंक्शन होता था।

यह एक सी ++ मानक फ़ंक्शन नहीं है।

+4

बोर्लैंड में कुछ बहुत अच्छे डॉस ग्राफिक्स पुस्तकालय थे। – Kredns

+3

दरअसल, माइक्रोसॉफ्ट सी ++ में अभी भी conio.h है, हालांकि clrscr() जैसे फ़ंक्शन वहां नहीं हैं। –

1

एक वेब सर्च कहती है कि हेडर फ़ाइल जो आप चाहते हैं वह 'conio.h' है - मैंने इसे आजमाया नहीं है, इसलिए कोई गारंटी नहीं है। इसका अस्तित्व इस बात पर भी निर्भर हो सकता है कि आप किस प्लेटफॉर्म के खिलाफ संकलन कर रहे हैं।

0

वास्तविक सी ++ में स्क्रीन को साफ़ करने का सबसे आसान तरीका केवल रिक्त रेखाओं का एक गुच्छा भेजना है। बेशक यह मानते हुए किया जाता है कि stdout स्क्रीन पर निर्देशित और नहीं है एक फ़ाइल:

for (int i = 0; i < 80; ++i) 
    cout << "\n"; 
cout << endl; 
+4

यह भी मानता है कि कंसोल लाइन बफर 80 लाइनों से कम है, जिसकी गारंटी नहीं है। –

+1

युप - लेकिन यदि आप एक स्क्रीन बफर "समाशोधन" के बारे में चिंता करते हैं, तो आमतौर पर आप जानते हैं कि आप कितनी लाइनों से निपट रहे हैं। – Eclipse

+0

दोनों अच्छी टिप्पणियां यहां हैं! –

3

आप इस समारोह के लिए इस हेडर फाइल को शामिल करना है

#include <conio.h> 
+0

बाद में सी ++ के साथ? मुझे ऐसा नहीं लगता: डी –

12

और इससे पहले कि किसी को हमेशा की तरह पोस्ट "कृपया ईमेल मुझे conio.h फ़ाइल "अनुरोध, क्या मैं यह इंगित कर सकता हूं कि इस प्राचीन बोर्लैंड हेडर फ़ाइल में केवल फ़ंक्शन की घोषणा शामिल है। आपको सहायक बोर्लैंड लाइब्रेरी की भी आवश्यकता होगी, जो किसी भी आधुनिक सी ++ संकलन प्रणाली के अनुकूल नहीं होगा।

+4

जो लोगों को नहीं रोकना चाहिए! वे सिर्फ लाइब्रेरी से फ़ंक्शन को अलग कर सकते हैं और इनलाइन असेंबली के माध्यम से इसे निष्पादित करने वाले शीर्षलेख में एक परिभाषा डाल सकते हैं! –

7

जैसा कि पहले उल्लेख किया है, clrscr(),

सभी इरादों और उद्देश्यों के लिए टर्बो C++ से है conio.h अंदर, conio.h "गैर मानक" है, और के रूप में ऐसी शायद बचा जाना चाहिए।

मैं एक सरल स्पष्ट स्क्रीन के लिए उपयोग करने के लिए प्रीकंपेलर का उपयोग करने के लिए उपयोग करता हूं, और बस ऑपरेटिंग सिस्टम के स्पष्ट कार्यक्रम को कॉल करता हूं .... यह जानना काफी समझदार है कि स्क्रीन कितनी "लंबा" है।

// somewhere in the program 
#define WINDOWS 1 

void console_clear_screen() { 
    #ifdef WINDOWS 
    system("cls"); 
    #endif 
    #ifdef LINUX 
    system("clear"); 
    #endif 
} 

खिड़कियों में, आप आप खिड़कियों सांत्वना सीधे एक "संभाल", अक्सर एक hWin के रूप में कोड में नोट का उपयोग कर के साथ बातचीत कर सकते हैं windows.h को देखने के लिए चाहते हो सकता है,।

लिनक्स में, मुझे शाप/ncurses के साथ शुभकामनाएं मिली हैं, हालांकि यह पहले थोड़ा उलझन में है।

अद्यतन कॉलिंग प्रणाली कार्यक्रम (? Clear.exe) एक संभावित सुरक्षा जोखिम है - अगर किसी को एक वैकल्पिक मार्ग के माध्यम से किसी भी तरह सिस्टम कॉल का अपहरण करने में सक्षम है, वे अजीब काम करने के लिए अपने कार्यक्रम के लिए मजबूर कर सकते हैं। मेरी सिफारिश यह है कि इन चीजों को पूरा करने के लिए अपने प्लेटफॉर्म के कंसोल एपीआई में खोदना है।

+3

# लोअरकेस परिभाषित नहीं है? इसके अलावा कंपाइलर आपके लिए विन्डोज़ या लिनक्स को परिभाषित करेगा, है ना? – jmucchiello

+0

मुझे नहीं पता कि परिभाषित केस संवेदनशील है या नहीं। और आम तौर पर परिभाषित windows.h "Win32" के रूप में यह सिर्फ एक उदाहरण था के माध्यम से शामिल किया गया है। –

+0

मुझे लगता है कि, जब तक कि आप को परिभाषित परिभाषित #define पहले – paulm

0

मैं भी बोर्लैंड करना चाहता था।

जांच घटाना एक अच्छा विचार है। यह कई यूनिक्स प्लेटफार्मों पर काम करता है।

आप स्रोत फोर्ज पर nconio पर एक नज़र डाल सकते हैं।

This भी आशाजनक दिखता है।

0

यूनिक्स जैसी प्रणालियों पर आप VT100 एस्केप कोड का उपयोग कर सकते हैं।

std::cout << "\033[2J" << std::flush; 

देखें http://www.termsys.demon.co.uk/vtansi.htm

1

आप प्रणाली cls आदेश आउटपुट स्क्रीन स्पष्ट करने के लिए उपयोग कर सकते हैं ..

clrscr() टर्बो ग से ++ है, conio.h और conio.h अंदर "गैर है मानक ", और इस तरह से शायद टाला जाना चाहिए। उदाहरण

#include<windows.h> 
    main() 
    { 
    some code....; 
    system("cls"); 
    some more code; 
    } 

इसके परीक्षण किया है और काम करता है .. मैं MinGW संकलक के साथ उपयोग देव C++ .. :)

0

लिनक्स पर मैं हमेशा का उपयोग करें:

void clrscr(void) 
{ 
    fprintf(stdout, "\033[2J"); // clean screen 
    fprintf(stdout, "\033[1;1H"); // move cursor to the first line 
} 
+0

आप 'clear' के स्रोत कोड को पढ़ने के लिए हैं, तो आप पाएंगे कि यह वास्तव में टर्मिनल की तरह और मुद्दों है कि टर्मिनल के लिए उपयुक्त उत्पादन, बल्कि यह सोचते हैं की तुलना में लग रहा है कि पूरी दुनिया एक वीटी 100 है। मैं इसे पाठक के लिए एक अभ्यास के रूप में छोड़ दूंगा क्योंकि एक पोर्टेबल कार्यक्रम में किया जाना चाहिए। –

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