Retour de chariot en C?

La sortie du programme suivant est: hai

Je n’ai pas compris comment le retour de chariot fonctionnait dans ce programme et, dans la réalité, quelqu’un peut-il m’aider?

 #include  #include void main() { printf("\nab"); printf("\bsi"); printf("\rha"); _getch(); } 

À partir de 5.2.2 / 2 (sémantique d’affichage des caractères):

\b ( retour arrière ) Déplace la position active à la position précédente sur la ligne en cours. Si la position active est à la position initiale d’une ligne, le comportement du dispositif d’affichage n’est pas spécifié.

\n ( nouvelle ligne ) Déplace la position active à la position initiale de la ligne suivante.

\r ( retour chariot ) Déplace la position active à la position initiale de la ligne en cours.

Ici, votre code produit:

  • ab
  • \b : retour d’un caractère
  • write si : substitue le b avec s (produisant asi sur la deuxième ligne)
  • \r : retour au début de la ligne en cours
  • write ha : remplace les deux premiers caractères (produisant hai sur la deuxième ligne)

Au final, le résultat est:

 \nhai 

Le programme imprime ab , revient d’un caractère et imprime si le résultat résultant est écrasé. Retour chariot ramène le curseur à la première colonne de la ligne en cours. Cela signifie que le ha sera imprimé au as et à as et le résultat est hai

Pas à pas:

[newline] ab

 ab 

[backspace] si

 asi 

[retour de chariot] ha

 hai 

Retour chariot, ne provoque pas de saut de ligne. Dans certaines circonstances, un seul CR ou LF peut être converti en une paire CR-LF. Cela dépend de la console et / ou du stream.