[newline] \ n과 \ r의 차이점은 무엇입니까?

\n(줄 바꿈)과 \r(캐리지 리턴) 의 차이점은 무엇입니까 ?

특히 와 사이에 실질적인 차이가 있습니까? 다른 하나 대신 사용해야하는 곳이 있습니까?\n\r



답변

ASCII 코드의 관점에서 보면 각각 10과 13이므로 3입니다 .-).

그러나 진지하게 많은 것이 있습니다.

  • 유닉스와 모든 유닉스 계열 시스템에서 \n줄 끝의 코드이며 \r특별한 의미는 없습니다.
  • 결과적으로 C 및 대부분의 언어에서 (원격으로) 복사하는 대부분의 언어 \n에서 줄 끝의 표준 이스케이프 시퀀스입니다 (필요에 따라 OS 특정 시퀀스로 /에서 변환 됨)
  • 구형 Mac 시스템 (OS X 이전 버전)에서 \r줄 끝 코드
  • Windows (및 이전의 많은 OS)에서 줄 끝 코드는 2 자 ( \r\n순서대로)입니다.
  • (놀라운 😉 결과로서 (Windows보다 훨씬 오래된 OS로 되돌아가는) \r\n인터넷의 텍스트 형식에 대한 표준 줄 종결
  • 전기 기계식 텔레타이프 같은 “터미널”의 \r경우 캐리지가 가장 왼쪽에 닿을 때까지 왼쪽으로 되돌아 가도록 명령하고 (느린 작동) \n롤러가 한 줄을 롤업하도록 명령합니다 (훨씬 더 빠른 작동). \r 전에 \n , 캐리지가 여전히 왼쪽으로가는 동안 롤러 이동할 수 있음 -!) 위키 백과는이 자세한 설명을 .
  • 원시 모드에서 문자 모드 터미널 (일반적으로 위와 같이 더 오래된 인쇄를 에뮬레이트 함)의 경우 \r\n유사하게 작동합니다 ( 캐리지 또는 롤러 없으므로 커서 측면에서 둘 다 제외).

실제로 텍스트 파일에 쓰는 현대적인 상황에서는 항상 사용해야합니다 \n(기본 런타임은 Windows와 같은 이상한 OS 인 경우이를 번역합니다). 사용하는 유일한 이유 \r는 문자 터미널 (또는이를 모방 한 “콘솔 창”)에 쓰고 있고 마지막으로 쓴 마지막 줄을 덮어 쓰기 위해 다음 줄을 쓰고 싶을 때입니다 (때로는 구피에 사용되는 “아스키 애니메이션” “진행률 표시 줄의 효과)-GUI의 세계에서는 꽤 쓸모 없어지고 있습니다 ;-).


답변

역사적으로 a \n는 캐리지를 아래 \r로 이동하는 데 사용 되었지만 a 는 캐리지를 페이지의 왼쪽으로 다시 이동하는 데 사용되었습니다.


답변

두 개의 다른 캐릭터.

\n 유닉스 텍스트 파일에서 줄 끝 종결 자로 사용됩니다.

\r Mac 텍스트 파일에서 줄 끝 종결 자로 사용됩니다.

\r\n (즉 둘 다) Windows 및 DOS 텍스트 파일에서 행을 종료하는 데 사용됩니다.


답변

아무도 그것을 구체적으로 언급하지 않았기 때문에 (알거나 기억하기에는 너무 어리십니까?)-나는 \r\n타자기 및 유사한 장치에 대한 출처 의 사용을 의심합니다 .

여러 줄을 지원하는 타자기를 사용하면서 줄 바꿈을 원할 경우 수행해야 할 두 가지 물리적 작업이있었습니다. 캐리지를 페이지의 시작 부분 (미국의 경우 왼쪽)으로 다시 밀고 용지를 한 단계 위로 급지하십시오. .

예를 들어, 라인 프린터 시절에 굵은 텍스트를 수행하는 유일한 방법은 줄 바꿈없이 캐리지 리턴을 수행하고 이전 문자에 동일한 문자를 인쇄하여 더 많은 잉크를 추가하여 더 어둡게 (굵게 표시)하는 것입니다. . 타자기에서 기계적인 “개행”기능이 실패했을 때, 이는 성가신 결과였습니다.주의를 기울이지 않으면 이전 텍스트 줄 위에 입력 할 수 있습니다.


답변

운영 체제마다 다른 두 가지 문자 또한 이것은 전송 TCP/IP해야하는 데이터에서 중요한 역할 을합니다\r\n .

\n 유닉스

\r

\r\n Windows와 DOS.


답변

완료하려면

쉘 (bash) 스크립트에서, \r커서를 온라인에서 물론 온라인으로 보낼 수 있습니다.\n 커서를 새로운 행에 넣을 수 있습니다.

예를 들어 다음을 시도하십시오.

echo -en "AA--AA" ; echo -en "BB" ; echo -en "\rBB"
  • 최초의 “에코”디스플레이 AA--AA
  • 두번째 : AA--AABB
  • 마지막 : BB--AABB

그러나 -en매개 변수 로 사용하는 것을 잊지 마십시오 .


답변

Windows에서 \ n은 다음 줄의 시작 부분으로 이동합니다. \ r은 다음 줄로 이동하지 않고 현재 줄의 시작으로 이동합니다. 내 콘솔 응용 프로그램에서 \ r을 사용하여 일부 코드를 테스트하고 있으며 텍스트가 화면 위로 스크롤되는 것을보고 싶지 않으므로 프레임 속도 (예 : 프레임 속도 ( FPS), 나는 printf ( “%-10d \ r”, fps); 그러면 다음 줄로 이동하지 않고 커서를 줄의 시작 부분으로 되돌리고 프레임 속도가 동일한 줄에서 지속적으로 업데이트되는 동안 화면에서 스크롤되지 않는 다른 정보를 얻을 수 있습니다 (% -10은 특정 출력은 10 자 이상이며, 왼쪽으로 정렬되어 공백으로 채워져 해당 줄의 이전 값을 덮어 씁니다. 이런 것들에 매우 편리합니다.

작은 역사

/ r은 “return”또는 “carriage return”을 의미하며 타자기에 대한 기록이 있습니다. 캐리지 리턴은 줄의 시작 부분에 입력 할 수 있도록 캐리지를 오른쪽으로 끝까지 이동 시켰습니다.

/ n은 타자기 일부터 새 줄로 이동 한 날부터 “새 줄”을 나타냅니다. 비록 시작에 필연적이지 않기 때문에 일부 OS는 타자기가 수행 한 순서와 같이 / r 리턴과 / n 줄 바꿈이 모두 필요하다는 이유를 채택했습니다. 또한 사용 된 오래된 8 비트 컴퓨터에 대해서도 설명합니다. “캐리지 리턴”에서 “Enter”가 아닌 “Return”을 가져야합니다.