2012-02-12 15 views
7

Escribí el siguiente programa en la C y cuando lo ejecuto, me sorprendió ver el resultado.Necesito ayuda para entender cómo n, b y r representarán la salida de impresión

Aquí es el programa

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

la salida es: - Hai mientras que esperaba "absiha" desde \ n es para la nueva línea, \ b es para la tecla de retroceso (no borrar) y \ r es para el retorno del carro Así que esperaba que curson estuviera en el carácter "i" porque se ha aplicado, pero cuando lo ejecuté y vi la salida, me sorprendió y confundió por completo. ¿Alguien puede por favor explicarme la salida?

+0

podría ser el sistema operativo específico. –

Respuesta

17

Vamos a dar un paso a la vez:

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

En primer lugar, manejar el retroceso. Tenga en cuenta que a pesar de que es "no-borrado", el siguiente carácter que debe emitirse sobreescribiría lo que se backspaced sobre: ​​

<new line>asi<carriage return>ha

Ahora, un retorno de carro significa volver al principio de la línea. Por lo que la "ha" sobrescribe el "como" en "asi:

<new line>hai

Ahora, el cursor está actualmente sentado en el i, por lo que el siguiente carácter que debe emitirse sobreescribiría i

+0

quiere decir retroceso acaba de mover el cursor una posición antes? ju st como una declaración de inserción? – ankurtr

+0

@ ankur.trapasiya Estoy a medio adivinar que eso es lo que quería decir con "no borrado", pero lo he visto antes en otros contextos, por ejemplo, si tengo una salida de terminal en un programa de ejecución larga, luego presiono el botón de retroceso en el teclado, el cursor se mueve pero el personaje permanece allí hasta que se coloca una nueva salida encima. No hay idea de lo que quieres decir con "como una declaración de inserción". – Izkata

+0

gran explicación, gracias :) –

3

Visita. 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

gracias por la respuesta informativa. Probablemente deberías leer la pregunta primero. – ankurtr

Cuestiones relacionadas