Pregunta

Parece que fue poniendo un salto de línea es lo suficientemente bueno, pero sé que se supone que es el retorno de carro + avance de línea. ¿Hay algo terrible sucedería si usted no pone el retorno de carro y única línea de alimentos para su uso?

Esto es en ANSI C y no va a ser redirigido a un archivo o cualquier otra cosa. Sólo una aplicación de consola normal.

¿Fue útil?

Solución

La consola de Windows sigue la misma línea que termina la convención que se asume para los archivos, o para el caso de terminales reales, físicos. Tiene que ver tanto CR y LF para mover correctamente a la siguiente línea.

Dicho esto, hay una gran cantidad de infraestructura de software entre un programa ANSI C y esa consola. En particular, cualquier biblioteca estándar de C I / O función se va a tratar de hacer lo correcto, asumiendo que ha permitido que la oportunidad. Esta es la razón se definieron modificadores fopen() y t de b para el parámetro mode.

Con t (el valor predeterminado para la mayoría de las corrientes, y en particular para stdin y stdout) entonces cualquier \n impresa se convierte a una secuencia CRLF, y sucede a la inversa para lecturas. Para desactivar este comportamiento, utilice el modificador b.

Por cierto, los terminales conectados a cajas tradicionalmente * nix incluyendo el DEC VT100 emulado por XTerm también necesita tanto CR y LF. Sin embargo, en el mundo * nix, la conversión de un carácter de nueva línea a una secuencia CRLF se maneja en el controlador de dispositivo TTY lo que la mayoría de los programas no necesitan saber acerca de ella, y los modificadores t y b son a la vez ignorado. En esas plataformas, si necesita enviar y recibir caracteres en un TTY sin que la modificación, es necesario mirar hacia arriba stty (1) o las llamadas al sistema que depende de.

Si su contrario el programa ANSI C es evitar la biblioteca de C de E / S a la consola (tal vez porque necesita acceder a color de los caracteres de la consola y otros atributos), entonces si necesita enviar CR o no dependerá de los cuales Win32 llamadas a la API está utilizando para enviar los caracteres.

Otros consejos

Si estás en un entorno * nix \ n (salto de línea) es probablemente muy bien. Si estás en Windows y no está redirigiendo (ahora) un avance de línea también está bien, pero si alguien en somepoint vuelve a dirigir,: - (

Si estás haciendo de Windows, sin embargo, podría haber problemas si la salida se redirige a un archivo de texto y luego otro proceso intenta consumir los datos.

La consola sabe qué mostrar, pero los consumidores no puede ser feliz ...

Si está usando C # Usted puede tratar de la Environment.NewLine "constante".

http://msdn.microsoft.com/en -us / biblioteca / system.environment.newline.aspx

Si usted está realmente en la vainilla c, que está pegado con \ r \ n. : -)

Depende de lo que estés usando para. Algunos programas no se mostrarán las nuevas líneas correctamente si usted no pone tanto \r y \n.

Si intenta sólo para escribir \n algunos programas que consumen su archivo de texto (o salida) podrán mostrar su texto como una sola línea en lugar de varias líneas.

También hay algunos formatos de archivo y protocolos que completamente no ser válido sin necesidad de utilizar tanto \r y \n.

No he probado en tanto tiempo que no estoy seguro de que recuerdo lo que pasa ... pero no un avance de línea por sí mismo moverse una línea abajo sin volver a la columna de la izquierda?

En función de su compilador, la salida estándar podría ser abierto en modo de texto, en cuyo caso será traducido un solo salto de línea a \ r \ n antes de ser escrita a cabo.

Editar: Acabo de intentar una prueba rápida, y en XP devuelve un archivo sin pantallas normalmente. Todavía no sé si alguna compiladores insertan los retornos para usted.

En C, archivos (llamados "corrientes") vienen en dos sabores -. Binario o de texto

El significado de esta distinción se deja aplicación / dependientes de la plataforma, pero en Windows (con implementaciones comunes que he visto) al escribir en texto corrientes '\ n' se traduce automáticamente en "\ r \ n", y cuando la lectura de las corrientes de texto "\ r \ n" se traduce automáticamente a '\ n'.

El "consola" es en realidad "salida estándar", que es una corriente abierta por defecto como una secuencia de texto. Así, en la práctica, en Windows, escribiendo "¡Hola, mundo \ n" debería ser más que suficiente -. Y portátil

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top