CR(Carriage Return), LF(Line Feed), CRLF

이태혁·2020년 7월 26일
2

둘다 예전 타자기를 쓸때 사용하던 용어이다.

CR(Carriage Return, ASCII 13): 타자기의 현재 커서를 같은 줄 맨 앞으로 이동한다(현재 줄을 덮어 쓰게 된다.)

LF(Line Feed, ASCII 10): 타자기의 커서는 가만히 있고 종이를 한줄 위로 올려서 커서가 다음줄을 가르킨다.

  • 윈도우는 CR과 LF를 둘다 사용해서 다음줄로 이동한다.(커서를 맨앞으로 이동하고 다음줄로 바꿈)

  • 맥은 LF만으로 다음줄을 인식한다고 한다.

  • 따라서 서로 다른 운영체제에서 만들어진 파일의 다음줄 인식이 서로 달라서 문제가 생길 때가 있다.

  • 맥에서는 LF만으로 다음줄을 구분하기 때문에 LF(\n)만 쳐도 다음줄 맨앞으로 글씨가 써지지만

Hello World
Hello World
  • 이 파일을 윈도우에서 열면 LF를 다음줄로 커서만 이동된걸로 인식하기 때문에
Hello World
           Hello World

로 보여진다.

다음은 C언어로 각각 CR과 LF만으로 코딩해서 나온 결과이다.

#include <stdio.h>

int main (void)
{
	printf("CR first line\r");
	printf("CR second line\r");
	printf("\n-------------------\n");
	printf("LF first line\n");
	printf("LF second line\n");
}

결과

  • CR은 현재줄의 맨 앞으로 이동되므로 first line이 덮어씌워진다.

요약

  • CRLF: 윈도우의 엔터(개행)
  • LF: 맥, 리눅스등의 엔터(개행)
  • 두 OS의 인식이 달라서 충돌될 때가 있음
profile
back-end, cloud, docker, web의 관심이 있는 예비개발자입니다.

0개의 댓글