2012-02-12 12 views
7

Aşağıdaki programı C programında yazdım ve çalıştırdığımda çıktıya bakarak şaşırdım. \ R ı \ n bir yeni satır için olduğu "absiha" bekliyor oysa, \ B geri alma (sigara sil) için hai ve -: Burada n, b, ve r printf çıktısını nasıl işleyeceğini anlama konusunda yardıma mı ihtiyacınız var

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

çıkış olan program taşıma dönüşü için. Bu yüzden, ben 'p' karakterinin uygulanacağını beklemekteydim çünkü uygulandım ve çıkış yaptığımda tamamen şaşırdım ve kafası karıştı. Herkes bana çıkışı açıklayabilir mi?

+0

belirli işletim sistemi olabilir. –

cevap

17

en bir adım bir anda alsın:

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

Birincisi, backspace işlemek. o "olmayan silme" olsa bile, sonraki karakterin olmasını çıkış üzerine backspaced ne üzerine yazılacağı unutmayın:

<new line>asi<carriage return>ha

Şimdi, satırbaşı satırın başlangıcına geri dönmek anlamına gelir. Şimdi <new line>hai

, imleç şu anda i oturan bir sonraki karakter çıkış i üzerine yazılacağı olmak çok,

+0

Eğer geri silme hemen önce imleci bir pozisyon hareket edeceğini demek? ju bir ekleme ifadesi gibi mi? – ankurtr

+0

@ ankur.trapasiya "Silme" ile kastettiğiniz şeyin yarısı olduğunu tahmin ediyorum, ancak daha önce başka bir bağlamda görmüştüm - eğer uzun bir çalışma programında terminal çıkışım varsa, o zaman klavyede, imleç hareket eder ama karakterin kendisi yeni çıkana kadar orada kalır. "Ekleme ifadesi gibi" ile ne demek istediğine dair bir ipucu yok. – Izkata

+0

harika bir açıklama, teşekkürler :) –

3

Ziyareti: asi" bölümündeki "olarak" Yani "ha" yazar. 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

Bilgilendirici cevap için teşekkürler. Muhtemelen önce soruyu okumalısın. – ankurtr

İlgili konular