2011-01-09 22 views
24

wyjściowy jest następujący program: haiPowrót karetki w C?

nie miałem jak powrót \r przewóz działa w tym programie oraz w rzeczywistym może ktoś mi pomóc?

#include <stdio.h> 
#include<conio.h> 

void main() 
{ 
    printf("\nab"); 
    printf("\bsi"); 
    printf("\rha"); 
    _getch(); 
} 
+2

[To nie jest wyjście, które otrzymuję] (http://codepad.org/669KUYlv) (Przynajmniej raz naprawiam 'void main()' i niestandardowe 'conio.h' rzeczy.) –

+0

I ' m przy użyciu wyjścia Visual C++ jest "hai" –

+0

, jeśli umieścisz \ n na końcu ab jak "ab \ n" dostanie to, czego zapragniesz? – cristian

Odpowiedz

55

Z 5.2.2/2 (wyświetlacz charakter semantyki):

\b (Backspace) Przesuwa aktywną pozycję do poprzedniej pozycji na bieżącej linii. Jeśli aktywna pozycja znajduje się w początkowym położeniu linii , zachowanie urządzenia wyświetlającego nie jest określone.

\n (nowa linia) Przenosi aktywnego położenia do położenia początkowego następnej.

\r (powrotu karetki) Przenosi aktywnego położenia do położenia początkowego prądu linii.

Tutaj kod produkuje:

  • <new_line>ab
  • \b: wstecz o jeden znak
  • zapisu si: unieważnia b z s (produkującej asi w drugim wierszu)
  • \r : z powrotem na początku bieżącej linii
  • zapisu ha: zastępuje pierwsze dwa znaki (produkcja hai w drugim wierszu)

W końcu wyjście jest:

\nhai 
+0

Wyjście bt to "hai" nie ahi –

+0

@mr_eclair literówka na ostatniej linii: naprawiono – icecrime

+0

+1 wątpliwości jasne. Dziękuję Ci. –

11

drukuje programowe ab, wraca jeden znak i wydruki si nadpisanie wartości b w wyniku asi. Powrót karetki zwraca karetkę do pierwszej kolumny bieżącej linii.Oznacza to, że ha zostaną wydrukowane na as a wynik jest hai

+0

+1 teraz mam to dziękuję –

5

krok-po-kroku:

[nowalinia] ab

ab 

[cofania] Si

asi 

[carriage-return] ha

hai 

Powrót karetki, nie powoduje nic nowego. W pewnych okolicznościach pojedynczy CR lub LF może zostać przetłumaczony na parę CR-LF. To zależy od konsoli i/lub strumienia.

Powiązane problemy