2012-02-12 17 views
7

प्रस्तुत करेगा, मैंने सी में निम्न प्रोग्राम लिखा था और जब मैं इसे चलाता था, तो आउटपुट को देखकर मुझे आश्चर्य हुआ। जबकि मैं "absiha" के बाद से \ N नई लाइन के लिए है उम्मीद कर रहा था hai , \ ख बैकस्पेस (गैर मिटा) के लिए है और \ r है -:यह समझने में मदद की ज़रूरत है कि n, b, और r printf आउटपुट

यहां कार्यक्रम

int main() 
{  
     printf("\nab"); 
     printf("\bsi");  
     printf("\rha");  
} 

उत्पादन किया जाता है कैरिज रिटर्न के लिए। तो मैं उम्मीद कर रहा था कि कर्सर "मैं" चरित्र पर होगा क्योंकि \ r लागू किया गया है, लेकिन जब मैं इसे चलाता हूं और आउटपुट देखा तो मैं पूरी तरह से आश्चर्यचकित और उलझन में था। क्या कोई मुझे आउटपुट समझा सकता है?

+0

यह ऑपरेटिंग सिस्टम विशिष्ट हो सकता है। –

उत्तर

17

की यह एक समय में एक कदम लेते हैं:

<new line>ab<backspace>si<carriage return>ha

पहले, बैकस्पेस संभाल। ध्यान दें कि उत्पादन भले ही यह है "गैर मिटा", अगले वर्ण होने के लिए ऊपर लिख क्या अधिक backspaced गया था:

<new line>asi<carriage return>ha

अब, एक गाड़ी वापसी पंक्ति के आरम्भ में वापस जाने के लिए मायने रखता है। तो "हा" अधिलेखित कर देता है "के रूप में" "भारतीय पुरातत्व सर्वेक्षण में:

<new line>hai

अब, कर्सर वर्तमान में i पर बैठा है, इसलिए अगले वर्ण होने के लिए उत्पादन i अधिलेखित कर देगा

+0

तुम्हारा मतलब बैकस्पेस बस कर्सर से पहले एक स्थान के लिए कदम होगा? जू एक डालने कथन की तरह सेंट? – ankurtr

+0

@ ankur.trapasiya मैं आधा अनुमान लगा रहा हूं कि आप "गैर-मिटा" से क्या मतलब रखते हैं, लेकिन मैंने इसे अन्य संदर्भों में पहले देखा है - जैसे, यदि मेरे पास लंबे समय तक चलने वाले प्रोग्राम में टर्मिनल आउटपुट है, तो बैकस्पेस पर हिट करें कुंजीपटल, कर्सर खत्म हो जाता है लेकिन चरित्र तब तक रहता है जब तक कि इसके ऊपर नया आउटपुट नहीं लगाया जाता है। "एक सम्मिलित कथन की तरह" से आपका कोई मतलब नहीं है। – Izkata

+0

महान स्पष्टीकरण, धन्यवाद :) –

3

जाएँ। http://en.wikipedia.org/wiki/Escape_sequences_in_C

Escape Sequence Character \a Bell (speaker beeps) \b Backspace (non-erase) \f Form feed/clear screen \n New line \r Carriage Return \t Tab \v Vertical tab \\ Backslash \? Question mark \' Single quote \" Double quote \xnn Hexadecimal character code nn \onn Octal character code nn \nn Octal character code nn

+0

सूचनात्मक उत्तर के लिए धन्यवाद। शायद आपको पहले प्रश्न पढ़ना चाहिए। – ankurtr

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