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 si
: substitue le b
avec s
(produisant asi
sur la deuxième ligne) \r
: retour au début de la ligne en cours 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.